- 標(biāo)記方法為棄用
//系統(tǒng)定義的兩個(gè)宏
#define DEPRECATED_ATTRIBUTE __attribute__((deprecated))
#define DEPRECATED_MSG_ATTRIBUTE(msg) __attribute((deprecated((msg))))
eg:
@interface MyClass : NSObject { ... }
-(void)foo:(id)x DEPRECATED_ATTRIBUTE ;
// If you want to specify deprecated message:
-(void)bar:(id)x DEPRECATED_MSG_ATTRIBUTE("Use baz: method instead.");
...
@end
- 判斷當(dāng)前設(shè)備是模擬器還是真機(jī)
#if TARGET_IPHONE_SIMULATOR
// 模擬器
#elif TARGET_OS_IPHONE
// 真機(jī)
#endif
- 判斷當(dāng)前設(shè)備系統(tǒng)
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0
// 這里寫設(shè)備系統(tǒng)大于8.0 以上的代碼
#else
// 這里寫設(shè)備系統(tǒng)小于8.0以上的代碼
#endif
- 在發(fā)布模式下屏蔽輸出函數(shù)
#ifdef DEBUG
#define NSLog(format, ...) NSLog(format, ##__VA_ARGS__)
#else
#define NSLog(format, ...)
VA_ARGS是一個(gè)可變參數(shù)的宏矮嫉,很少人知道這個(gè)宏佛寿,這個(gè)可變參數(shù)的宏是新的C99規(guī)范中新增的,目前似乎只有g(shù)cc支(VC6.0的編譯器不支持)璃岳。宏前面加上##的作用在于哀九,當(dāng)可變參數(shù)的個(gè)數(shù)為0時(shí)蛹疯,這里的##起到把前面多余的","去掉的作用,否則會(huì)編譯出錯(cuò), 你可以試試掉弛。