美文网首页
iOS - 宏定义分享

iOS - 宏定义分享

作者: 简了个书1993 | 来源:发表于2017-08-21 17:48 被阅读13次
// 定义一个 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) {
            
        }];
    }
}

相关文章

  • IOS NSLog宏定义

    IOS NSLog宏定义 标签(空格分隔): IOS IOS NSLog宏定义 宏定义NSLog方法,不用加";"...

  • iOS - 宏定义分享

  • ios常用宏定义分享

  • 获取iOS系统版本,谨慎使用[[[UIDevice curren

    最近分享了iOS开发中相关的一些宏定义,其中涉及到判断iOS的版本号的宏,有简友评论这个方法不靠谱,建议我找个更好...

  • iOS 宏定义

    初学ios不久时间,对ios的宏定义充满好奇,宏的各种高级用法让ios代码变得优雅,那么宏究竟是什么,让我来花时间...

  • iOS 宏定义

    debug时打印,下面一句是解决xcode8打印不全的问题; 屏幕宽高,或者比例 NSUserDefaults 存...

  • iOS 宏定义

    ///屏幕宽度 #define KSCREENWIDTH [UIScreen mainScreen].bounds...

  • iOS宏定义

    1 weakself和strongself #ifndef weakify #if DEBUG #ifhas_fe...

  • iOS宏定义

    1. 宏定义简介 宏定义是使用#define将某段代码、字符串等一串的文字,用一个宏来代替的一种预处理方式。 2....

  • iOS 宏定义

网友评论

      本文标题:iOS - 宏定义分享

      本文链接:https://www.haomeiwen.com/subject/oyfhdxtx.html