我已经将我的项目切换到ARC,并且我不明白如果必须使用strong
或weak
用于IBOutlets。 Xcode中做到这一点:在界面生成器,如果创建例如UILabel
,我与助理编辑将它连接到我的ViewController
,它创建此:IBOutlet和其他弱或强
@property (nonatomic, strong) UILabel *aLabel;
它使用strong
,而不是我读RayWenderlich网站的教程说这个:
但是对于这两个特定的属性,我有其他计划。我们会将其声明为
weak
,而不是strong
。
@property (nonatomic, weak) IBOutlet UITableView *tableView;
@property (nonatomic, weak) IBOutlet UISearchBar *searchBar;
Weak
是所有出口属性推荐关系。 这些视图对象已经是视图控制器视图 层次结构的一部分,并且不需要保留在别处。宣布您的网点weak
的最大优势 是可以节省您编写012DXviewDidUnload方法的时间。目前我们
viewDidUnload
看起来是这样的:
- (void)viewDidUnload
{
[super viewDidUnload];
self.tableView = nil;
self.searchBar = nil;
soundEffect = nil;
}
现在就可以简化为以下几点:
- (void)viewDidUnload
{
[super viewDidUnload];
soundEffect = nil;
}
因此,使用weak
,而不是strong
,和在videDidUnload
中删除设置为零,而不是Xcode使用th e strong
,并在viewDidUnload
中使用self... = nil
。
我的问题是:我什么时候必须使用strong
,而当weak
? 我也想用于部署目标iOS 4,那么我何时必须使用unsafe_unretain
?当使用strong
,weak
和unsafe_unretain
时,任何人都可以用一个小教程来帮助我解释一下吗?
感谢答案 – Piero
你说,对于iboutlet,如果我使用强壮,我必须在viewdidunload中使用nil,而对于低内存,我没有泄漏,而使用weak,我不必在videwdidunlaod中使用nil,对于低内存警告最好是强大的解决方案还是弱点? – Piero
这是一样的。使用'weak'可以节省手工编写代码的时间(两行代码)。但是,Xcode为你做。我个人的意见。我喜欢用'strong'。 –