簡體   English   中英

將NSString對象設置為nil是否有意義?

[英]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雖然仍然存在,但應該用於刪除可以在loadViewviewDidLoad重新創建的任何內容。

如果字符串屬性是視圖控制器模型的一部分,並且無法重新創建,則不要刪除它們。

不保證調用該方法 - 只有在視圖控制器處於屏幕外時才會調用該方法,但系統已經受到內存壓力。 它不像viewWillAppearviewDidDisappear 它不應該與您的視圖控制器的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM