Apple이 메모리 관리 프로그래밍 안내서에서 어떤 "최상위 객체"에 대해 이야기하고 있습니까?
문제
에서 코코아를위한 메모리 관리 프로그래밍 안내서 애플은 최상위 개체에 대해 이야기합니다. 그들은 각자마다 아울렛이 필요하다고 말합니다.
그러나 아울렛에 저장하지 않는 최상위 객체가있는 경우 LoadNibNamed가 반환 한 배열을 유지해야합니다. 소유자 : 옵션 : 어레이 내부의 객체가 조기에 해제되는 것을 방지합니다.
그렇다면 "최상위 객체"는 정확히 무엇을 의미합니까? 나는 그들이 루트보기와 창에 대해 이야기한다고 말할 것입니다. 또 뭐야? 그리고 이것은 펜촉을 수동으로로드하고 싶은 경우에만 힌트입니까? 아니면 펜촉과 사례에 적용됩니까?
해결책
최상위 객체는 파일의 소유자 및 응용 프로그램 이외의 인터페이스 빌더의 기본 NIB 창에 나타나는 객체입니다.
다른 팁
예, 이것은 펜촉을 수동으로로드하는 경우에 관한 것입니다. 그렇지 않으면 전화하지 않았을 것입니다. loadnibnamed : 소유자 : 옵션 :.
파일의 소유자, 첫 번째 응답자가있는 창에 나타나는 개체는 최상위 객체입니다. 뷰에 추가 한 내용은 하위 뷰가됩니다. 모든 하위 뷰는 직접 슈퍼 뷰에 의해 유지되므로 다른 곳에 보관할 필요가 없습니다. 보기 자체는 뷰 컨트롤러에 의해 유지되므로 유지할 필요가 없습니다.
비 뷰 객체를 추가하거나 메인 뷰에 바로 넣지 않는 뷰 (현재 표시되지 않은 도구 막대 버튼)를 유지 해야하는 경우 보유해야합니다. 그렇지 않으면 출시됩니다. 이 작업을 수행하는 것이 선호하는 방법은 다음과 같이 @property를 사용하는 iboutlets입니다.
@property(nonatomic, retain) IBOutlet UIBarButtonItem * myButton;
이로 인해 -setmybutton : 파일의 소유자에게 호출되며 (이 코드가 파일의 소유자에있는 경우) IB를 통해 연결된 객체는이 속성에 저장되도록 전송됩니다.