在ARC下,将每个IBOutlet作为财产是什么意思?对于仅在视图控制器内部使用的IBOutlet使用ivars会有什么缺点?
答案 0 :(得分:8)
如果你没有使用setter / getter方法做任何事情,不要依赖于那些属性的键值观察,并且不要预期子类会从覆盖这些属性中受益,那么就没有真正的缺点在ARC下使用ivars for IBOutlets。
答案 1 :(得分:0)
我一直在为我的“私人”IBOutlets使用ivars并遇到内存泄漏问题。我认为这是因为我的IBOutlets使用__unsafe_unretained
属性而不是__weak
。我不能使用__weak
,因为它在iOS 4上不受支持(我希望我的应用程序向后兼容iOS 4)。很难理解ARC,IBOutlets,viewDidUnload以及所有混乱中真正发生的事情。叹息...
无论如何,当我将IBOutlets从ivars更改为属性时,内存泄漏问题就消失了。
因此,回答我自己的问题,使用ivars for IBOutlets的一个缺点是,如果你有__unsafe_unretained
属性,你可能会遇到内存泄漏。