向弱引用说bye-bye
大家都知道,在ARC模式中,有两种引用:强引用和弱引用。这两种都是用来描述指针的,一个对象拥有的指针对象(strong,保留计数),或者它不拥有自己的指针对象(weak,保留计数不变)。
所以,弱引用可以让计数器归零,意味着对象执行dealloc方法的时候,指针就为零。
iOS8以前的使用
// UITableView iOS 8 之前
@property(nonatomic, assign) id<UITableViewDataSource> dataSource
@property(nonatomic, assign) id<UITableViewDelegate> delegate
// UICollectionView iOS 8 之前
@property(nonatomic, assign)id<UICollectionViewDelegate> delegate
@property(nonatomic, assign) id<UICollectionViewDataSource> dataSource
但是在iOS9中,使用了weak, nullable来代替assign
// UITableView iOS 9中使用
@property(nonatomic, weak, nullable) id<UITableViewDataSource> dataSource
@property(nonatomic, weak, nullable) id<UITableViewDelegate> delegate
// UICollectionView iOS 9中使用
@property(nonatomic, weak, nullable) id<UICollectionViewDelegate> delegate
@property(nonatomic, weak, nullable) id<UICollectionViewDataSource> dataSource
注意:但是考虑到系统的兼容性,到时候使用的时候需要作出判断!