2009-04-29 2 views
6

Memory Management Programming Guide for Cocoa에서 Apple은 최상위 수준 개체에 대해 말합니다. 그들은 각자 아울렛이 필요하다고 말합니다. 어떤 최상위는하지만, 콘센트에 보관하지 않는 객체가있는 경우메모리 관리 프로그래밍 가이드에서 Apple이 말하는 "최상위 수준 객체"는 무엇입니까?

, 당신은 보유해야 하나 배열은 loadNibNamed에 의해 를 반환 배열 내부 방법 또는 객체 : 소유자 : 옵션을 해당 개체가 이 조기에 공개되지 않도록합니다.

그래서 "최상위 개체"와 정확히 무슨 뜻입니까? 나는 그들이 루트보기와 창에 대해서 이야기한다고 말할 것입니다. 또 뭐야? 그리고이 힌트는 수동으로 펜촉을 넣고 싶을 때를위한 것입니다. 또는 어떤 펜촉이나 어떤 경우에도 신청합니까?

+1

+1 메모리 관리에 대한 귀하의 질문에 정말 만족하고 있습니다. 너무 자주, 우리는 그 관행 뒤에있는 이유를 상기시키지 않고 우리가받은 기억 관리 실천을 당연하게 생각합니다. 함께, 최근 귀하의 게시물은 아이폰 메모리 관리에 관한 Apple FAQ가 될만한 가치가 있습니다! –

+0

고마워요! 나는 그들이 다른 사람들을 도울 것이라고 확신한다. – Thanks

답변

6

최상위 레벨 객체는 파일 소유자 및 응용 프로그램을 제외한 Interface Builder의 주 nib 창에 나타나는 객체입니다.

+0

사실, 맥 오에스에서 적어도 응용 프로그램은 최상위 수준의 객체이기도합니다. 이상한 이유로 loadNibNamed : owner : options :에 의해 반환 된 NSTopLevelObjects 배열에는 NSApplication도 포함됩니다. – uliwitness

3

네, 수동으로 Nib를로드하는 경우입니다. 그렇지 않으면 loadNibNamed : owner : options :을 호출하지 않았을 것입니다.

+0

IIRC는 Mac에서 그렇지만 UIKit의 경우 UIViewController에서 -view와 별도로 모든 최상위 개체를 유지해야합니다. 그렇지 않으면로드 한 후 자동으로 렌더링됩니다. 아니면 내가 여기에 차이점을 misremember 무엇입니까? – uliwitness

0

파일 소유자, 첫 번째 응답자,보기가있는 창에 나타나는 개체는 최상위 개체입니다. 뷰에 추가하는 것은 하위 뷰일 것입니다. 모든 하위 뷰는 직접 슈퍼 뷰에 의해 유지되므로 다른 위치에 유지할 필요가 없습니다. 뷰 자체는 뷰 컨트롤러에 의해 유지되므로이를 유지할 필요가 없습니다.

비 뷰 객체를 추가하거나 현재 표시되지 않는 툴바 버튼과 같이 기본 뷰에 즉시 표시되지 않는 뷰를 추가하는 경우이를 유지해야합니다. 그렇지 않으면 해제됩니다. .

@property(nonatomic, retain) IBOutlet UIBarButtonItem * myButton; 

이 -setMyButton가 발생합니다 : (이 코드는 파일의 소유자 인 경우) 파일의 소유자에 전화를 할 수 IB를 통해 연결 개체가이 일에 대한 나의 선호하는 방법은 다음과 같이 @property를 사용 IBOutlets 함께 이 속성에 저장되도록 보냈습니다.