Iphone 在ARC下使用IB插座特性的有用性?

Iphone 在ARC下使用IB插座特性的有用性?,iphone,objective-c,ios,automatic-ref-counting,Iphone,Objective C,Ios,Automatic Ref Counting,在ARC下,将每个IBOutlet都变成一个属性有什么意义?对于仅由视图控制器内部使用的IBoutlet,使用IVAR有什么坏处?如果您不使用setter/getter方法,请不要依赖于对这些属性的键值观察,也不要期望子类会从重写这些属性中获益,那么,在ARC下仅对iBAR使用iBAR并没有真正的缺点。我一直在对我的“私有”iBAR使用iVAR,并遇到了内存泄漏问题。我想这是因为我的IBOutlets使用了\uuuuunsafe\uunrepeared属性,而不是\uuuu-weak。我不能使用

在ARC下,将每个IBOutlet都变成一个属性有什么意义?对于仅由视图控制器内部使用的IBoutlet,使用IVAR有什么坏处?

如果您不使用setter/getter方法,请不要依赖于对这些属性的键值观察,也不要期望子类会从重写这些属性中获益,那么,在ARC下仅对iBAR使用iBAR并没有真正的缺点。

我一直在对我的“私有”iBAR使用iVAR,并遇到了内存泄漏问题。我想这是因为我的IBOutlets使用了
\uuuuunsafe\uunrepeared
属性,而不是
\uuuu-weak
。我不能使用
\uu-weak
,因为iOS 4不支持它(我希望我的应用程序与iOS 4向后兼容)。很难理解ARC、IBOutlets、viewDidUnload和所有这些乱七八糟的东西到底发生了什么。叹息

不管怎样,当我将iBar的ibOutlet改为属性时,内存泄漏问题就消失了


因此,为了回答我自己的问题,在IBOutlets中使用ivar的一个缺点是,如果您具有
\uuuunsafe\uunretained
属性,您可能会遇到内存泄漏为什么你认为必须创建属性?@菲利波:我一直在这里看到,它是“好的实践”,简化了VIEDIN DUNION代码。我希望有一个类似于Scott Meyers和Habor萨特编写的C++的有效的iOS书。谢谢,ivars将在我的代码中删除大量的
self.
前缀。请查看我的答案,如果您对发生的事情有任何见解,请告诉我。这不太可能是您的泄漏源。如果您的插座不安全或未维修,则根据定义,这些IVAR没有保留其目标,并且没有保留任何东西不会导致泄漏。(这可能会导致崩溃,但那是另一回事。)您没有指定您添加的属性是否同样
不安全_未维护
,但无论哪种情况,您通过添加属性所能做的唯一事情就是导致更多的保留。如果没有更多的细节,就不可能说出你泄漏的原因。如果你真的很好奇,你可以提交另一个问题。我添加的属性确实是不安全的。我真的很困惑,为什么将iBar门店从ivars改为properties会带来不同。也许我没有正确解释XCode的仪器。不安全的未修复可能会导致崩溃,但不会导致泄漏。我得说你把乐器解释错了。对不起。:)但也就是说,已经过了好几个月了:你对发生的事情有什么额外的了解吗?我已经转到了iOS 5(不再支持iOS 4.x),所以我不再使用
safe\u unretained
。我没有尝试将我的
IBOutlet
属性更改回ivars,因此我不知道原始问题是否仍然存在。我们遇到了完全相同的问题。我们将IBOutlets设置为ivar,不安全的_未恢复,并且内存泄漏最终会导致应用程序崩溃。如果我们瞄准iOS 5并将其改为“弱”,那就没问题了。我们最终把他们搬到了不安全的房子里,现在还没修好。