我有一个表视图作为IBOutlet
,默认情况下的XCode设置其属性为strong
,而不是weak
。 有时候,我得到一个“收到内存警告”的消息。 于是,我就从改变很多性能strong
到weak
,但它似乎并没有影响过程和事物工作的顺利开展。 我应该设置网点薄弱,还是我错了?
而最重要的是,我应该设置的所有属性,以nil
在viewDidUnload
方法,或仅IBOutlet
S'
我有一个表视图作为IBOutlet
,默认情况下的XCode设置其属性为strong
,而不是weak
。 有时候,我得到一个“收到内存警告”的消息。 于是,我就从改变很多性能strong
到weak
,但它似乎并没有影响过程和事物工作的顺利开展。 我应该设置网点薄弱,还是我错了?
而最重要的是,我应该设置的所有属性,以nil
在viewDidUnload
方法,或仅IBOutlet
S'
你应该只设置Strong
属性,以nil
在viewDidUnload
。 Weak
,如果目标对象被释放属性将自动设置为无。
IBOutlet
可以设置为strong
或weak
基础上的要求。
对于警告的问题,你所面临的,你可以提供更多的细节和代码?
除了由乔什提供的链接,里面有很多关于SO与该主题相关的帖子,有些是下面:
弱或强于IBOutlet中和其他
Objective-C的声明@属性属性(非原子,副本,强,弱)
好详细的解释可以在这里找到:
http://www.raywenderlich.com/5677/beginning-arc-in-ios-5-part-1
有关这个主题的苹果文档可以在这里找到: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html#//apple_ref/doc/uid/TP30001163-CH17 -SW1
“当父母有到子对象的引用,你应该使用很强的借鉴意义。当孩子有它的父对象的引用,你应该使用弱引用”
一般来说,当你处理存储周期弱引用使用。 如果你用强的,你需要设置为零的viewDidUnload,因为如果你不这样做,在内存不足的条件下,你可能会导致意外的泄漏。 你不释放他们的dealloc因为ARC会为你做它。 因为,当目标对象被销毁,这些值都为零自动设置为代替弱不需要那么治疗。 没有了悬摆指针。