[Objective-C] 프로퍼티(Declared Property)

프로퍼티란 기본적으로 객체의 내부에서 선언되는 인스턴스 변수는 private하다. (물론 별도의 지시 @public같은 걸 써서 선언할 수 있기는 하지만) 그리고 객체의 외부에서 객체 내부의 인스턴스 변수에 직접적으로 접근하는 것은 여러 면에서 추천되지 않으며, 통상 이를 위해서는 접근자(accessor)라 불리는 메소드를 정의하게 마련이다.

atomic 프로퍼티의 접근자 메서드

많은 iOS책들에서 프로퍼티는 대부분 nonatomic 속성으로 지정한다. 이 때 nonatomic은 항상 명시하는데, 이는 Objective-C에서 프로퍼티의 디폴트는 atomic이기 때문이다. 그런데 이게 정말, nonatomic이어야 하기 때문에 이렇게 하는 것인지, 맞는 것인지는 좀 아리송한데… atomic은 예전에도 한 번 설명한 적이 있는데, 접근자를 호출한 스레드에서 그 프로퍼티를 읽거나 쓰는 중간에는 다른 스레드나 큐에서 액세스 하지 못하도록 한다는 의미이다. 따라서 멀티 스레드나 백그라운드 작업을 염두에 둔다면 atomic 속성에 대해서도 고려를 해야 한다는 의미이다. 어떤 스레드에서 객체의 프로퍼티에 접근할 때 다른 스레드에서의 접근을 막는 것을 공교롭게도

[Cocoa] 키밸류 코딩에 대한 오해와 진실

키 밸류 코딩은 코코아 프레임워크의 핵심적인 요소 중 하나로, 상당히 많은 코코아 프레임워크의 구성 요소들이 이 특성에 의존하고 있다. 특히 키-밸류 옵저빙, 코어데이터 및 코코아 바인딩 등 코딩의 수고스러움을 비약적으로 줄여주는 기술들이 이에 기반하고 있다. 키 밸류 코딩도 그 자체로는 너무나 간단한 개념이라 그런지, 프로퍼티 선언 등의 Objective-C 언어 자체의 기능과 혼동하는 글들이 많아서 정리해 본다.