iOS - 宏定义分享

2017-08-21  本文已影响13人  简了个书1993
// 定义一个 self 的 weak 引用 _self
#define __weakself __weak __typeof(self) _self = self;

示例:
__weakself
NSTestObj *obj = [NSTestObj new];
obj.block = ^{
    [_self logCount];
};
// 定义一个 obj 的 weak 引用
#define __weakof(obj) __weak __typeof(obj) _##obj = obj;

示例:
NSTestObj *obj = [NSTestObj new];
__weakof(obj)
self.block = ^{
    [_obj logCount];
};
定义 weak self 代替原 self
#define weakself typeof(self) _self = self;__weak typeof(_self) self = _self;
⚠️这个宏在用的时候需要加花括号(每个方法都会存在一个系统变量self,避免冲突,所以放在花括号内以局部变量使用)

- (void)func {
    {
        weakself
        [Net.json GET:@"http://xx.json" params:nil success:^(NSURLResponse *response, NSDictionary *object) {
            // 这里的 self 即 weak self
            [self.array addObjectsFromArray: object[@"data"]];
        } failure:^(NSError * _Nonnull error) {
            
        }];
    }
}
上一篇 下一篇

猜你喜欢

热点阅读