我已将我的项目切换到 ARC,但我不明白我是否必须使用strong
IBOutlets weak
。Xcode 这样做:在界面生成器中,如果创建一个UILabel
例如,我将它与助手编辑器连接到我的ViewController
,它会创建这个:
@property (nonatomic, strong) UILabel *aLabel;
它使用strong
,而不是我在 RayWenderlich 网站上阅读了一个教程,上面写着:
但是对于这两个特定的属性,我有其他计划。而不是
strong
,我们将它们声明为weak
。
@property (nonatomic, weak) IBOutlet UITableView *tableView;
@property (nonatomic, weak) IBOutlet UISearchBar *searchBar;
Weak
是所有出口属性的推荐关系。这些视图对象已经是视图控制器的视图层次结构的一部分,不需要保留在其他地方。声明你的 outlet 的一大好处weak
是它可以节省你编写 viewDidUnload 方法的时间。目前我们的
viewDidUnload
样子是这样的:
- (void)viewDidUnload
{
[super viewDidUnload];
self.tableView = nil;
self.searchBar = nil;
soundEffect = nil;
}
您现在可以将其简化为以下内容:
- (void)viewDidUnload
{
[super viewDidUnload];
soundEffect = nil;
}
所以使用weak
, 而不是,strong
并在.videDidUnload
strong
self... = nil
viewDidUnload
我的问题是:我什么时候必须使用strong
,什么时候weak
?我还想用于部署目标 iOS 4,所以我什么时候必须使用unsafe_unretain
?任何人都可以通过一个小教程帮助我很好地解释我,什么时候使用strong
,weak
以及unsafe_unretain
使用 ARC?