iOS小菜那些年写过的宏文件

Posted MittyoO

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS小菜那些年写过的宏文件相关的知识,希望对你有一定的参考价值。

一、对新手有用而不一定知道的几个宏

  这里要吐槽的是,很多人加载了libextobjc的Pod库,却只用到@weakify(self)和@strongify(self),真是浪费的无法理解,自己写一个,或者把要用的扒出来不行吗。。。

  首先,挂出自己写的,现在用的顺手的几个宏,希望能对新手们有所帮助

/* ---------   主线程执行 --------- */
#define excecuteOnMain(a) if ([NSThread isMainThread]) {\
                              a                          }                          else {                              dispatch_async(dispatch_get_main_queue(), ^{                                  a                              });                          }

/* ---   weak strong Dance ------ */
#ifdef DEBUG
    #define ext_keywordify autoreleasepool {}
#else
    #define ext_keywordify try {} @catch (...) {}
#endif

#define weakify(self) \
    ext_keywordify     __attribute__((objc_ownership(weak))) __typeof__(self) self_weak_ = (self)

#define strongify(self) \
    ext_keywordify _Pragma("clang diagnostic push") _Pragma("clang diagnostic ignored \"-Wshadow\"")     __attribute__((objc_ownership(strong))) __typeof__(self) self = (self_weak_)_Pragma("clang diagnostic pop")

/* --------   空语句挂载断点 ------ */
#ifdef DEBUG
    #define __NOP__ assert(1)
#else
    #define __NOP__
#endif

使用示例

- (void)viewDidLoad {
    [super viewDidLoad];
    @weakify(self);
    self.block =^{
        @strongify(self);
        __NOP__;
        self.view.backgroundColor = [UIColor redColor];
    };
    excecuteOnMain(
        self.block();
    )
}

二、那些年写过的宏文件  

  初学ios时,保留着C程序员的习惯,什么东西,方法也好,常量也好,代码块也好,都喜欢写成宏,而写了几百行的宏定义。截图如下,要用的童鞋可以拿去用。我现在会觉得,有些方法类的宏还是写到util类里比较好呢,会比较好调试呢。编程之路法无定法,看个人喜好了。同时,也缅怀下那些青葱岁月,没有屏幕适配,没有如今要从iOS6.0兼容到9.3的艰辛,一切单纯而美好^ ^

技术分享技术分享技术分享

以上是关于iOS小菜那些年写过的宏文件的主要内容,如果未能解决你的问题,请参考以下文章

那些年写过的毕设论文

python 生成18年写过的博客词云

那些年,我们一起写过的“单例模式”

那些年,我们一起写过的“单例模式”

那些年写Kotlin遇到的各种坑,您需要收藏啦

iOS开发中那些高效常用的宏