본문 바로가기
[Effective Objective-C] #51 initialize 와 load 메서드는 간결하게 만들라 [Effective Objective-C] #51 initialize 와 load 메서드는 간결하게 만들라 출처 : Effective Objective-C -오브젝티브-C 에서 최상위 클래스인 NSObject 를 상속한 대다수 클래스에는 초기화를 할 수 있는 몇 가지 메서드가 있다.이 메서드들 중 첫 번째는 load 이고 프로토타입은 다음과 같다.+ (void)load -클래스와 카테고리가 런타임에 추가될 때 이 메서드가 딱 한 번 호출된다.이는 클래스 또는 카테고리를 포함하는 라이브러리가 로드될 때, 즉 일반적으로 앱이 처음 실행(launch)될 때 일어난다.하지만 iOS 용 앱일 때만 해당된다.맥 OS X 앱은 동적 로딩(dynamic loading)같은 기능을 자유롭게 쓸 수 있다.그렇기 때문에 앱.. 2017. 10. 19.
[Effective Objective-C] #50 캐시가 필요할 때 NSDictionary 보다는 NSCache 를 사용하라 [Effective Objective-C] #50 캐시가 필요할 때 NSDictionary 보다는 NSCache 를 사용하라 출처 : Effective Objective-C -맥 OSX 또는 iOS 앱을 개발할 때 대부분의 경우 캐싱을 어떻게 구현할지 정해야 한다.첫 번재로 해볼만한 방법은 사전을 이용해 메모리에 저장하는 것이다.경험이 없는 개발자는 간단하게 NSDictionary 를 사용할 것이다.많이 사용되는 클래스이기 때문이다.그러나 Foundation 프레임워크의 NSCache 가 정확히 이런 용도로 설계되었기 때문에 이 클래스를 사용하는 것이 훨씬 좋다. -NSDictionary 에 비해 NSCache 가 지닌 장점은 시스템 메모리가 꽉 차면 자동으로 캐시의 메모리가 정리된다는 것이다.사전을 캐.. 2017. 10. 18.
[Effective Objective-C] #49 커스텀 메모리 관리 시맨틱을 가진 컬렉션을 만들기 위해 무비용 전환을 사용하라 [Effective Objective-C] #49 커스텀 메모리 관리 시맨틱을 가진 컬렉션을 만들기 위해 무비용 전환을 사용하라 출처 : Effective Objective-C -NSArray 는 배열을 위한 Foundation 의 오브젝티브-C 클래스이다.그리고 CFArray 는 CoreFoundation 의 배열을 위한 것이다.배열을 생성하는 이 두 가지 방법은 별개로 보이지만 무비용 전환이라는 강력한 기능 덕에 이 두 클래스 간 캐스팅을 아주 긴밀하게 할 수 있다. -무비용 전환으로 Foundation 의 오브젝티브-C 클래스와 CoreFoundation 의 C 데이터 구조체 간에 캐스팅을 할 수 있다.나는 C 수준 API를 클래스나 객체가 아닌 데이터 구조체라고 부른다.그것들은 오브젝티브-C 의 .. 2017. 10. 17.
[Effective Objective-C] 목차와 요약을 통해 한 눈에 알아보는 Effective Objective-C #41 ~ #48 [Effective Objective-C] 목차와 요약을 통해 한 눈에 알아보는 Effective Objective-C #41 ~ #48 출처 : Effective Objective-C #41 : 동기화에는 락보다는 디스패치 큐를 사용하라 동기화 문법을 제공하기 위해 디스패치 큐를 사용할 수 있다. 그리고 그냥 간단하게 @synchronized 블록이나 NSLock 객체를 이용해 동기화를 제공할 수도 있다. 동기화와 비동기화 디스패치를 함께 사용하는 것은 일반적인 락으로 하는 동기화와 동일한 기능을 제공할 수 있지만, 스레드에서 비동기 디스패치로 호출하면 잠금 없이 호출한다. 병렬 큐와 배리어 블록을 이용하면 동기화를 좀 더 효율적으로 할 수 있다. #42 : performSelector 메서드군보다는 .. 2017. 10. 16.
[Effective Objective-C] #48 반복문에는 블록 열거를 사용하라 [Effective Objective-C] #48 반복문에는 블록 열거를 사용하라 출처 : Effective Objective-C -최신 오브젝티브-C 에는 열거하는 방법이 많다.표준 C 반복문부터 오브젝티브-C 1.0의 NSEnumerator, 그리고 오브젝티브-2.0 의 빠른 열거자(fast enumeration)도 있다. for 루프 -컬렉션을 열거하는 첫 번째 메서드는 훌륭하고 오래된 방법인 for 루프다.NSArray *anArray = …;for (int i=0; i < anArray.count; i++){ id object = anArray[i]; // do something} 이 방법은 쓸만하지만 사전이나 집합을 반복하면 훨씬 복잡해진다.NSDictionary *aDictionary = ….. 2017. 10. 15.
[Effective Objective-C] #47 시스템 프레임워크를 숙지하라 [Effective Objective-C] #47 시스템 프레임워크를 숙지하라 출처 : Effective Objective-C -시스템 프레임워크가 없어도 오브젝티브-C 를 사용할 수 있지만 그런 일은 매우 드물다.표준 최상위 클래스 NSObject 조차도 언어에 포함되어 있는 것이 아니라 Foundation 프레임워크에 포함되어 있다.Foundation 을 쓰는 것을 원하지 않으면 자신만의 최상위 클래스 뿐 아니라 자신만의 컬렉션, 이벤트 루프, 다른 유용한 클래스를 직접 만들어야 한다.게다가 시스템 프레임워크 없이 맥 OS X 와 iOS 앱을 오브젝티브-C 로 개발할 수 없다. -어떤 시스템 프레임워크가 있는지 모른다면 이미 만들어진 것도 또 다시 직접 모두 작성해야 할 것이다. -프레임워크는 동적 .. 2017. 10. 14.
[Effective Objective-C] #46 dispatch_get_current_queue 사용을 피하라 [Effective Objective-C] #46 dispatch_get_current_queue 사용을 피하라 출처 : Effective Objective-C -GCD 를 사용하면서 특히 여러 큐에 디스패칭할 때 어떤 큐가 현재 실행되고 있는지 알아내야 하는 경우가 흔히 있다.dispatch_queue_t dispatch_get_current_queue() 이 함수가 하는 일은 현재 실행되고 있는 큐를 반환하는 것이라고 문서에 나와 있다.그러나 주의 깊게 다루어야 한다.사실 이 함수는 iOS 6.0 에서 공식적으로 폐기되었다.그러나 맥 OS X 10.8에서는 폐기되지 않았다.그렇다 하더라도 맥 OS X 에서도 사용을 피해야 한다. -이 메서드를 흔히 사용하게 되는 전형적인 안티패턴(anti patter.. 2017. 10. 13.
[ios] permission category [ios] permission category Location ServicesContactsCalendarsRemindersPhotosBluetooth SharingMicrophoneCameraHealthHomeKitMotion Activity Account access ( Twitter, Facebook ) account access, bluetooth sharing, calendars, camera, Contacts, facebook, Health, homekit, ios permission category, Location, Location Services, Microphone, motion activity, permission category, photos, Reminders, twitter, [.. 2017. 10. 12.
[ios] 권장되는 permission guide [ios] 권장되는 permission guide http://techcrunch.com/2014/04/04/the-right-way-to-ask-users-for-ios-permissions/ -Pre-permission dialog 를 사용한다. iOS 의 permission 수락 다이어로그를 띄우기 전에 요청할 권한에 대해 설명하는 UI 를 가진 dialog 를 사용한다. -Double System-Style Dialog Pre-permission dialog 를 system style 로 만드는 것이 좋다. 친절한 설명이 곁들여진 곳에서 Access 를 허용한 후 실제 ios 에서 Don’t allow 를 선택한 경우는 3%. 두 번 물어보는 것이 짜증나는 액션일 수는 있지만, 확실하게 allow.. 2017. 10. 11.
반응형