OC:菜鸟看开源
2021-11-14 本文已影响0人
春暖花已开
写在最前:
以下是菜鸟读开源库看到的一些比较有意思的东西记录及心得,仅限于自己回顾,不保证理解正确。
一、YYKit系列
- 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"的出现。
- 判断运行的环境是否为模拟器
- (BOOL)isSimulator {
#if TARGET_OS_SIMULATOR
return YES;
#else
return NO;
#endif
}
延伸:多了解一些宏定义,善于运用,能使代码更简洁,解决问题方式更好。