我有一个表格视图IBOutlet
,默认情况下,XCode将其属性设置为strong
而不是weak
。有时我会收到一条“收到内存警告”的信息。信息。所以我尝试将许多属性从strong
更改为weak
,但它似乎不会影响流程并且事情顺利进行。我应该把插座设置为弱电,还是我错了?
最重要的是,我应该在nil
方法中将{strong>所有属性设置为viewDidUnload
,还是仅将IBOutlet
s设置为<{1}}?
答案 0 :(得分:1)
您应该在Strong
中仅将nil
属性设置为viewDidUnload
。 Weak
如果目标对象已取消分配,属性将自动设置为Nil。
IBOutlet
可根据要求设置为strong
或weak
。
对于您所面临的警告问题,您可以提供更多详细信息和代码吗?
除了Josh提供的链接外,还有很多与此主题相关的帖子,其中一些在下面:
weak or strong for IBOutlet and other
Objective-C declared @property attributes (nonatomic, copy, strong, weak)
详细解释如下:
http://www.raywenderlich.com/5677/beginning-arc-in-ios-5-part-1
关于这个主题的Apple文档可以在这里找到: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html#//apple_ref/doc/uid/TP30001163-CH17-SW1
答案 1 :(得分:0)
&#34;当父级具有对子对象的引用时,您应该使用强引用。当一个孩子有一个对其父对象的引用时,你应该使用一个弱引用&#34;
通常,在处理内存周期时会使用弱引用。如果你使用strong,你需要在viewDidUnload中设置nil,因为如果你不这样做,在内存不足的情况下,你可能会导致意外泄漏。你不会在dealloc中释放它们,因为ARC会为你做这件事。 因为当目标对象被破坏时,这些值被自动设置为nil,因此不需要该处理。没有悬空指针了。