![](/img/trans.png)
[英]Does NSDictionary initWithObjectsAndKeys handles NULL/nil objects and other than NSString objects
[英]Does it make sense to set NSString objects to nil?
在viewDidUnload
,我將IBOutlets
設置為nil,我還將NSString
對象設置為nil。 這些是(nonatomic,strong)
。 將NSString
對象設置為nil是否有意義?
請注意,您沒有將任何對象設置為nil
。 你設置為nil
是指向你的一個對象的指針 ,因此它不再指向任何東西。
這意味着如果在其他對象中有其他實例變量指向您的字符串,它們將不會看到對象中的任何差異 - 它們仍將指向相同的舊字符串,具有相同的未更改的內容。
然而,要回答你的問題:它確實是有意義的nil
了你的變量,但如果當你的視圖控制器被釋放,那么實例變量也將被釋放。 所以,如果你的字符串都很小,也可能不是一個迫切需要nil
出來的viewDidUnload
。
viewDidUnload
雖然仍然存在,但應該用於刪除可以在loadView
或viewDidLoad
重新創建的任何內容。
如果字符串屬性是視圖控制器模型的一部分,並且無法重新創建,則不要刪除它們。
不保證調用該方法 - 只有在視圖控制器處於屏幕外時才會調用該方法,但系統已經受到內存壓力。 它不像viewWillAppear
或viewDidDisappear
。 它不應該與您的視圖控制器的dealloc
方法混淆。
如果您手動管理內存,則不必將插座本身設置為nil,只需將鏈接對象設置為nil。
例如,如果你有@property (nonatomic,strong)IBOutlet UIImageView *imageView;
你只需要將圖像視圖設置為nil - imageView = nil;
-viewDidUnload
僅用於釋放在-viewDidLoad
或-loadView
中創建的對象,包括IBOutlets。
如果你沒有在-loadView
或-viewDidLoad
分配這些字符串,那么在-viewDidUnload
釋放它們是錯誤的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.