OC:菜鸟看开源

写在最前:
以下是菜鸟读开源库看到的一些比较有意思的东西记录及心得,仅限于自己回顾,不保证理解正确。


一、YYKit系列

  1. YYSYNTH_DUMMY_CLASS(NSString_YYAdd)
/**
 Add this macro before each category implementation, so we don't have to use
 -all_load or -force_load to load object files from static libraries that only
 contain categories and no classes.
 Example:
     YYSYNTH_DUMMY_CLASS(NSString_YYAdd)
 */
#ifndef YYSYNTH_DUMMY_CLASS
#define YYSYNTH_DUMMY_CLASS(_name_) \
@interface YYSYNTH_DUMMY_CLASS_ ## _name_ : NSObject @end \
@implementation YYSYNTH_DUMMY_CLASS_ ## _name_ @end
#endif

当使用静态库中有分类的时候,我们必须加上-ObjC-all_load-force_load,但这样都会使可执行文件的体积变大。YYKit 中的这个宏定义在 分类之前加了一个空类,这样.m实现文件就包含了类,生成的 .o文件就会被链接器打包进最终的可执行文件,从而避免了 "selector not recognized"的出现。

  1. 判断运行的环境是否为模拟器
- (BOOL)isSimulator {
#if TARGET_OS_SIMULATOR
    return YES;
#else
    return NO;
#endif
}

延伸:多了解一些宏定义,善于运用,能使代码更简洁,解决问题方式更好。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容