2

我有一个表视图为IBOutlet,默认情况下,XCode将其属性设置为strong而不是weak。有时我会收到“接收到的内存警告”消息。所以我试图将strong以上的许多房产改为weak,但它似乎并没有影响到这个过程,而且事情也很顺利。我应该把网点设置得很弱,还是我错了?什么时候使用强或弱的属性

而且最重要的是,我应该设置viewDidUnload方法ALL属性nil,或仅IBOutlet S'

+0

可能的重复[应该IBOutlets强或弱在ARC?](http://stackoverflow.com/questions/7678469/should-iboutlets-be-strong - 或 - 弱弧) – 2012-07-07 08:42:36

回答

1

您只能在viewDidUnload中设置Strong属性为nilWeak如果目标对象被释放,属性会自动设置为Nil。

IBOutlet可以根据需要设置为strongweak

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

除了由乔什提供的链接,里面有很多关于SO与该主题相关的帖子,有些是下面:

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

苹果公司关于这个主题的文档可以在这里找到: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html#//apple_ref/doc/uid/TP30001163-CH17-SW1

+0

我使用ARC,它会自动设置弱点tener在viewDidUnload方法中为零。我收到了内存warning.l,虽然我将所有指针设置为零,在viewDidUnload。我把NSLog放在那里,但不是调用viewDidUnload,它的内存不足,不释放任何东西(因为NSLog没有显示),程序崩溃。我应该怎么做?有什么建议么? – Milad 2012-07-07 21:26:17

+0

您使用的是哪个版本的iOS?不知道为什么'viewDidUnload'没有在低内存警告中被调用。你可以在这里发布一些代码并谈论一下应用程序,场景,控制器等?这里有一个可能有用的链接:http://stackoverflow.com/questions/11050384/viewdidunload-not-called-for-alloc-init-initialized-viewcontroller-with-no-xib-f ** FYI **:' viewDidUnload'在iOS 6中被弃用。 – 2012-07-12 12:22:59

0

“当父对象具有对子对象的引用时,应该使用强引用。当孩子有一个对其父对象的引用时,你应该使用一个弱引用“

一般弱引用用于处理内存周期,如果你使用强壮,你需要在viewDidUnload中设置nil,因为如果你不喜欢在内存不足的情况下,你可能会造成意想不到的泄漏,你不会在dealloc中释放它们,因为ARC会为你做这件事,因为当目标对象被破坏时,那些值自动设置为零,没有悬挂指针了

相关问题