2

我有一个表格视图IBOutlet,默认情况下 XCode 将其属性设置为strong而不是weak. 有时我会收到“收到内存警告”消息。所以我尝试将许多属性从strongto更改weak,但它似乎并没有影响过程并且事情运行顺利。我应该将出口设置为弱,还是我错了?

最重要的是,我应该在方法中设置所有属性,还是只设置s?nilviewDidUnloadIBOutlet

4

2 回答 2

1

您应该只将Strong属性设置为nilin viewDidUnloadWeak如果目标对象被释放,属性会自动设置为 Nil。

IBOutlet可以根据需要设置strong或设置weak

对于您面临的警告问题,您能否提供更多详细信息和代码?

除了 Josh 提供的链接外,还有很多与此主题相关的 SO 帖子,其中一些如下:

IBOutlet 和其他的弱或强

Objective-C 声明的@property 属性(非原子、复制、强、弱)

可以在这里找到很好的详细解释:

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

于 2012-07-07T09:50:01.317 回答
0

“当父对象引用子对象时,应使用强引用。当子对象引用其父对象时,应使用弱引用”

通常,在处理内存周期时会使用弱引用。如果你使用 strong 你需要在 viewDidUnload 中设置 nil 因为如果你不这样做,在内存不足的情况下,你可能会导致意外的泄漏。您不会在 dealloc 中释放它们,因为 ARC 会为您完成。相反,weak 不需要这种处理,因为当目标对象被销毁时,这些值会自动设置为 nil。不再有悬空指针。

于 2014-05-07T10:58:11.523 回答