2011-09-28 2 views
1

NSObject AppController : NSObject가 있다고 가정 해 봅시다. IB를 사용하여 NSObject 컨트롤을 MainMenu.xib로 드래그하고 클래스를 AppController로 지정합니다. MainMenu.xib가 한 번로드되고 MainMenu.xib 내부의 객체가 응용 프로그램의 수명 동안 메모리에 있기 때문에 AppController 객체가 싱글 톤이됩니까?MainMenu.xib에 NSObject를 추가하면 싱글 톤 객체가 생성됩니까?

그런 다음 IBOutlet을 AppDelegate로 드래그하여이 싱글 톤 개체에 액세스 할 수 있습니다. 이것은 빠른 방법처럼 보입니다. 이것은 좋은 습관입니까 아니면 낙심해야합니까?

표준 메소드는 클래스 내에 정적 AppController * sharedInstance를 추가하고 + (AppController *) sharedAppController를 사용하여 액세스하는 것으로 가정합니다.

답변

1

아니요, 코드에서 동일한 클래스의 다른 인스턴스를 만들지 않으므로 아무 것도 아닙니다.

단일 인스턴스를 만드는 것이 편리한 방법입니다. MainMenu.xib 내부

와 개체 앱 이것은 사실이 아니다

의 삶 메모리에 있습니다. 아무도 이러한 객체를 보유하지 않으면 (또는 GC에서 강력한 참조를 보유하고있는 경우) 할당이 해제됩니다. 사실입니다. 아래의 Peter Hosey의 의견을 참조하십시오.

+0

오해를 해결해 주셔서 감사합니다. – jemeshsu

+0

"사실이 아닙니다. 아무도 이러한 객체를 보유하지 않으면 (또는 GC에서 강력한 참조를 보유하고있는 경우) 할당이 해제됩니다. "Mac에서는 이것이 사실이 아닙니다. GC를 사용하지 않을 때 아무도 이러한 객체를 해제하지 않으면 할당이 해제됩니다. AppKit은 파일 소유자를 대신하여 최상위 수준의 객체를 유지합니다. http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html#//apple_ref/doc/uid/10000051i -CH4-SW6 MainMenu의 File 's Owner는 NSApplication 객체입니다. iOS에서는 올바른 것입니다. 모든 물체는 살아 남기 위해 무언가에 의해 유지되어야합니다. –

+0

정정을 보내 주셔서 감사합니다, 피터. 나는 내 대답을 바로 잡았다. –