在viewDidUnload
我在那裏設置IBOutlets
爲零,我也設置NSString
對象爲零。這些是(nonatomic,strong)
。將NSString
對象設置爲零是否有意義?將NSString對象設置爲零是否有意義?
回答
-viewDidUnload
僅用於釋放在-viewDidLoad
或-loadView
中創建的對象,包括IBOutlets。
如果您沒有在-loadView
或-viewDidLoad
中分配這些字符串,那麼在-viewDidUnload
中釋放它們是錯誤的。
這些字符串是我的實例變量。 – NCFUSN
IButlets呢?他們是在「viewDidUnload」方法中創建的嗎? – harshitgupta
如果您手動管理內存,那麼您不必將出口本身設置爲零,只有與其鏈接的對象。
舉例來說,如果你有@property (nonatomic,strong)IBOutlet UIImageView *imageView;
你只需要設置圖像以零 - imageView = nil;
ARC與viewDidUnload – jrturton
無關@jrturton感謝您打電話給我,我不知道我在想什麼。 –
viewDidUnload
,而它仍然存在,應該被用來刪除任何東西,你可以重新在loadView
或viewDidLoad
中創建。
如果字符串屬性是您的視圖控制器的模型的一部分,並且無法重新創建,則不要刪除它們。
該方法不保證被調用 - 它只會在視圖控制器不在屏幕上時調用,但系統受到內存壓力。它不像viewWillAppear
或viewDidDisappear
。它不應該與您的視圖控制器的方法相混淆。
請注意,您沒有設置任何對象到nil
。你所做的設置爲nil
是指針到你的一個對象,所以它不會指向任何東西。
這意味着如果其他對象中的其他實例變量指向您的字符串,它們將不會在對象中看到任何區別 - 它們仍將指向同一個舊字符串,並且具有相同的未更改內容。
但是,要回答你的問題:它確實對你的變量nil
有意義,但是如果和當你的視圖控制器被解除分配時,那麼實例變量也將被解除分配。所以如果你的琴絃很小,可能不需要nil
他們在viewDidUnload
。
- 1. 將對象設置爲零是否很常見?
- 2. 釋放後是否將對象設置爲零所需?
- 3. 將ActiveRecord :: Errors對象設置爲零
- 4. 將對象重置爲零?
- 5. 此工廠的域對象設計是否有意義?
- 6. IOS對象字段被設置爲零意外
- 7. 是否可以爲NSString設置自定義字體和大小?
- 8. 編譯器是否將處置的對象設置爲null?
- 9. 如何爲UDPClient設置ReceiveBufferSize?或者是否有意義設置? C#
- 10. 對象== nil或nil ==對象來檢查對象是否爲零?
- 11. 將對象添加到容器後將其設置爲零?
- 12. 指針是否始終設置爲零?
- 13. 將Base SDK設置爲最新版本是否真的有意義?
- 14. iOS將NSString轉換爲NSDate總是零
- 15. 是否將php false定義爲零?
- 16. 在C++ 11中定義移動對象是否有意義?
- 17. 爲什麼使用後應該將對象設置爲null是否有原因?
- 18. 將對象值設置爲
- 19. 將對象的引用強制轉換爲對同一類的對象的引用是否有意義?
- 20. 是否可以將Range對象設置爲「向後選擇」?
- 21. 是否可以將某個對象設置爲只讀方法
- 22. 使用完成後,是否值得將對象設置爲null?
- 23. 當釋放NSArray時將對象設置爲零
- 24. 確實將對象設置爲零,導致其屬性釋放
- 25. 將對象參數設置爲零Objective-C
- 26. 應該釋放一個對象並將其設置爲零?
- 27. 使用ARC時將對象設置爲零時?
- 28. 將「Assign」屬性設置爲零的對象
- 29. 將對象設置爲零時,不會調用dealloc方法
- 30. 將核心數據對象設置爲零
您使用ARC嗎? – woz
看到這個問題:http://stackoverflow.com/questions/1210776/objective-c-difference-between-setting-nil-and-releasing – buildsucceeded
是的,我正在使用ARC。 – NCFUSN