美文网首页iOS Developer
提高你的开发效率——宏

提高你的开发效率——宏

作者: 郑明明 | 来源:发表于2017-12-21 14:23 被阅读139次

宏定义不仅仅局限于一些简单的常用固定标记,对于可复用的的可移植的小功能性代码,也可以采用宏定义封装,提高开发效率

本文通过一个实际例子引入主题


场景

在写网络请求的代码时,通常会做这样一个处理,异步操作回调。这段代码是通用的,所以可以利用宏定义抽取出来,做可复用的封装,下面通过代码解读。

代码

#define within_main_thread(block,...)\
do {\
if ([[NSThread currentThread] isMainThread]) {\
if (block) {\
block(__VA_ARGS__);\
}\
} else {\
if (block) {\
dispatch_async(dispatch_get_main_queue(), ^{\
block(__VA_ARGS__);\
});\
}\
}\
} while (0);

分析

以上的代码很简单,大致的逻辑显而易见,这里针对几个地方进行详细分析:

  1. within_mian_thread(block,...)第一个参数是block,第二个为可变参数,在宏定义的实际代码中可以发现为__VA_ARGS__,并且被用作了block的参数,这样就增加了宏的可拓展性。
  2. do{} while(0)效果和不用它是一样的,程序只执行一次,使用它的目的是:将实际代码包装在了括号中,这样在编译时替换为实际代码时就更加稳定。由这个目的我们还可以想到其他手段,例如@try{} @finally{},将代码放在@finally的括号中。

实际使用

- (void)getData :(void (^)(NSString *, NSNumber *))complete {
    // 从网络获取到两个数据,str和num
    if (complete) {
        within_main_thread(complete, str, num);
    }
}

这里可能会有一个疑惑,从网络获取到的数据为何要在主线程中设置,在异步线程中设置不也一样吗。这里的原因是考虑到安全性和封装质量,在主线程设置数据可以让其他任何地方使用时不用关心数据的安全问题。

相关文章

  • 提高你的开发效率——宏

    宏定义不仅仅局限于一些简单的常用固定标记,对于可复用的的可移植的小功能性代码,也可以采用宏定义封装,提高开发效率 ...

  • iOS 常用宏定义

    iOS 开发中使用一些常用宏定义可以大大提高开发效率,提高代码的重用性.以下是一些常用的宏定义: 像这些宏定义,在...

  • iOS开发中常用到的宏

    大家都是知道使用宏不仅方便,而且可以提高开发效率。下面总结了iOS开发过程中的一些常用宏。

  • iOS开发-学会使用代码块,提高你的开发效率

    iOS开发-学会使用代码块,提高你的开发效率 iOS开发-学会使用代码块,提高你的开发效率

  • iOS开发常用的宏定义

    大家都是知道开发中使用宏不仅方便,而且可以提高开发效率, 代码清晰易懂。下面我总结了我在做iOS开发时的一些常用宏...

  • ios开发的宏定义

    在日常的开发中,宏的定义可以提高效率,和解决bug的速度。本人讲开发中常用到的宏列了出来,并加入了其他同仁收集的宏...

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

    iOS开发过程中使用一些常用的宏可以提高开发效率,提高代码的重用性;将这些宏放到一个头文件里然后再放到工程中的-P...

  • iOS开发常见的宏定义(实用)

    iOS开发过程中使用一些常用的宏可以提高开发效率,提高代码的重用性;将这些宏放到一个头文件里然后再放到工程中的-P...

  • IOS开发常用宏定义

    前言 在pch文件中定义常用的宏可以极大的提高开发效率,改善代码臃肿,一下是我开发常用的一些宏定义,供大家参考。 ...

  • iOS 开发常用宏

    大家都是知道使用宏不仅方便,而且可以提高开发效率。下面总结了iOS开发过程中的一些常用宏,会持续的往里面添加。 /...

网友评论

    本文标题:提高你的开发效率——宏

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