OC中的 typeof()和__kindof
- typeof()
__weak typeof(self) weakSelf = self;
大家都比较熟悉 用于在block中避免循环引用内存泄漏,弱化self的指针,起到断开循环引用链的作用。 - typeof() 一元运算 可以根据()内的变量自动识别并返回其数据类型。
self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
//__strong防止提前释放
__strong typeof(self) strongSelf = weakSelf;
strongSelf.page = 1;
[strongSelf.dataArray removeAllObjects];
[strongSelf loadData];
}];
- OC中的 __kindof 是一种泛型,规定了某一类和其子类类型
__kindof 指变量中的类型和其子类 是-(BOOL)kindOfClass:中的kind~
例如:NSArray<__kindof UIView *> *viewArray;
就是指数组中不仅可以存入UIView类型 存其子类UIButton、UIImageView等也是没有问题的。