OC中的 typeof() 和 __kindof

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等也是没有问题的。

你可能感兴趣的:(OC中的 typeof() 和 __kindof)