20171122
Objective-C中遇到一个一时想不通的现象:条件编译
#if !TARGET_IPHONE_SIMULATOR
......
#else
......
#endif
无法生效,即#if
和#endif
中的代码在iPhone模拟器上居然会被编译。后来才想明白,原来是我没有引用Apple SDK usr/include
路径中的TargetConditionals.h
头文件,因为TARGET_IPHONE_SIMULATOR
宏是在这个文件中被定义的。在未定义的情况下,#if !TARGET_IPHONE_SIMULATOR
等价于#if !0
即为#if 1
,永远为真,所以任何情况下都会被编译。
正确的写法如下:
#