Deep Linking Deep linking은 Web에서 하이퍼링크를 이용해서 특정 웹사이트의 웹 컨텐츠를 사용할 수 있도록 해줍니다. 하지만 Mobile deep linking은 웹가 차이가 있습니다. 모바일에서 Deep linking은 URI를 사용해서 앱의 특정 컨텐츠가 있는 곳으로 바로 연결해주는 것입니다. Deferred deep linking은 유저가 앱을 설치하지 않았어도 컨텐츠에 접근할 수 있도록 해줍니다. ( 1. 앱스토어에서 유저가 앱을 설치할 수 있도록 열어주기 2.앱이 인스톨되면, 링크가 원래 URL과 파라미터로 호출되어 새로 설치된 앱이 이 호출을 처리할 수 있음 ) Deep linking 형태 twitter:// is the iOS URI to launch Twitter’s m..
(의역주의) Naming 명확한 사용 애매모호하게 작성하지 않기 Good extension List { public mutating func remove(at position: Index) -> Element } employees.remove(at: x) Bad x를 없애는 것인지 x에서 없애는 것인지 모호함 employees.remove(x) // unclear: are we removing x? 불필요한 단어 생략 Good public mutating func remove(_ member: Element) -> Element? allViews.remove(cancelButton) // clearer Bad public mutating func removeElement(_ member: Element)..
extension으로 다음과 같이 만들어 줍니다. extension UINavigationController { // 완전 안보임 func hideNavigationBar() { navigationBar.isHidden = true } // 투명하게 만들기 (버튼 등은 보임) func changeNavigationBar(isClear: Bool) { navigationBar.isHidden = false if isClear { navigationBar.shadowImage = UIImage() navigationBar.setBackgroundImage(UIImage(), for: .default) } else { navigationBar.shadowImage = nil navigationBar.setBa..
NSCache key-value 쌍으로 된 임시적으로 저장하기위해 사용하는 가변 컬렉션으로 리소스가 부족할 때 제거 대상이 됩니다. class NSCache : NSObject where KeyType : AnyObject, ObjectType : AnyObject Cache 오브젝트가 다른 가변 컬렉션과 다른 점 시스템 메모리를 너무 많이 사용하지 않도록 자동 제거 정책이 포함되어 있는 클래스입니다. 만약에 다른 앱에서 메모리가 필요해지면 이 정책은 캐시의 아이템을 제거하고 메모리 공간을 최소화합니다. 캐시를 lock하지 않고 다른 쓰레드에서 추가 제거 쿼리할 수 있습니다. NSMutableDictionary와 다르게 캐시는 key 객체를 복사하지 않습니다. 생성하는데 비용이 큰 임시적인 데이터를 일시..