在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