객체 소유를 strong으로 할 것이냐 weak으로 할 것이냐? 그 새로운 시작

이미 이 주제에 대해선 몇번 언급을 했다. 그리고 항상 헷갈리고.

더군다나 OS X에선 특정 인터페이스는 strong이나 assign으로만 해야 하는 것도 있고. (ARC가 활성화 되었어도, assign으로!)

OS X에서 iOS 프로그래밍까지 더 하기 시작했을 때, 둘 사이에 이게 달라 무지하게 헷갈렸다. 더군다나 Xcode의 Interface Builder 모듈도 종종 버그도 있고 해서, 그 놈이 기본으로 설정해 주는 것을 믿기도 힘들고.

그래도 다행스러웠던 점은, 애플이 iOS와 Mac OS X간의 차이를 해소하려 했다는 것이다.
이제 스토리보드가 Mac에도 사용되기 시작함으로써, 그 내재된 구조적 차이는 해소되어 가는 것 같다.

자. 이 문제를 갱신해 보자. 요번엔 애플의 문서에 무엇이 top object인지 좀 더 명확한 정의가 내려져 있다. (정말 이전엔 헷갈렸다. 알고 있다가도 또 보면 모르겠고.)

When your program loads a nib file, Cocoa recreates the entire graph of objects you created in Xcode. This object graph includes all of the windows, views, controls, cells, menus, and custom objects found in the nib file. The top-level objects are the subset of these objects that do not have a parent object. The top-level objects typically include only the windows, menubars, and custom controller objects that you add to the nib file. (Objects such as File’s Owner, First Responder, and Application are placeholder objects and not considered top-level objects.)

Resource Programming  Guide : Nib Files
From a practical perspective, in iOS and OS X outlets should be defined as declared properties. Outlets should generally be weak, except for those from File’s Owner to top-level objects in a nib file (or, in iOS, a storyboard scene) which should be strong. Outlets that you create should therefore typically be weak, because:

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: