最基本的宏定义语法有两种,一种是简单的宏定义,另一种是带参数的宏定义。
基本定义:
#define <MacroName> <MacroString>
带参数的宏定义:
#define <MacroName>(<paramList>) <MacroString>
#define LOCK(...) OSSpinLockLock(&_lock); \
__VA_ARGS__; \
OSSpinLockUnlock(&_lock);
#. 判断是否包含了某个FrameWork
#if __has_include (<YYCache/YYCache.h>)
#. 定义区间变量都非空的宏
NS_ASSUME_NONNULL_BEGIN
……
NS_ASSUME_NONNULL_END
#. 指定初始化函数 Designated Initializer
NS_DESIGNATED_INITIALIZER
#. 定义常量
FOUNDATION_EXPORT NSString * const testFly;
#. 防止警告
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks”
//Set line here
#pragma clang diagnostic pop
#.其他常见的宏
判断是否arc: ! __has_feature(objc_arc)