问题描述
一般项目中,可以使用宏定义来判断模拟器还是真机,这无疑是有效的。
- #if TARGET_IPHONE_SIMULATOR
- #define SIMULATOR 1
- #elif TARGET_OS_IPHONE
- #define SIMULATOR 0
- #endif
但是宏是预编译时发生作用的,那么在静态库中是否还能够使用宏定义来区分模拟器与真机?
分析思路
宏定义确实是预编译时发生作用的,但是静态库编译出来的.a文件通常是分为模拟器与真机两个的,及时通过lipo合并为fat.a文件,实际运行调用时所使用的.a文件也不是同一个.
验证与结论
通过试验验证,上面的代码确实能够区分模拟器与真机,即可以在静态库中使用宏定义区分iPhone模拟器与真机