我已将我的项目切换到 ARC,但我不明白我是否必须使用strongIBOutlets 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并在.videDidUnloadstrongself... = nilviewDidUnload
我的问题是:我什么时候必须使用strong,什么时候weak?我还想用于部署目标 iOS 4,所以我什么时候必须使用unsafe_unretain?任何人都可以通过一个小教程帮助我很好地解释我,什么时候使用strong,weak以及unsafe_unretain使用 ARC?
