讓我說我有一個NSObject的AppController:NSObject。使用IB,我將一個NSObject控件拖到MainMenu.xib中,並將該類指向AppController。由於MainMenu.xib只加載一次,並且MainMenu.xib中的對象在應用程序的整個生命週期中都處於內存中,它是否使AppController對象成爲單例?在MainMenu.xib中添加一個NSObject是否會創建一個單例對象?
然後我可以拖動一個IBOutlet到AppDelegate來訪問這個單例對象。這看起來很快捷。這是一種好的做法還是令人灰心?
我認爲標準方法是在類中添加一個靜態AppController * sharedInstance並使用+(AppController *)sharedAppController進行訪問。
感謝您澄清我的誤解。 – jemeshsu
「這是不正確的。如果沒有人保留這些對象(或者在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的文件所有者是NSApplication對象。在iOS上,你是對的;所有對象都必須保留一些東西才能保持活力。 –
感謝糾正,彼得。我糾正了我的答案。 –