NSParameterAssert一点纪录
今天看AFNetWorking代码时看到好多地方用到NSParameterAssert,就跟进看了下。
:NSParameterAssert的宏定义
#define NSParameterAssert(condition) NSAssert((condition), @”Invalid parameter not satisfying: %s”, #condition)
这里看到NSParameterAssert其实就是NSAssert的一种,condition就是条件。继续跟进看NSAssert
#define NSAssert(condition, desc, …) \
do { \
__PRAGMA_PUSH_NO_EXTRA_ARG_WARNINGS \
if (!(condition)) { \
[[NSAssertionHandler currentHandler] handleFailureInMethod:_cmd \
object:self file:[NSString stringWithUTF8String:__FILE__] \
lineNumber:__LINE__ description:(desc), ##__VA_ARGS__]; \
} \
__PRAGMA_POP_NO_EXTRA_ARG_WARNINGS \
} while(0)
__PRAGMA_PUSH_NO_EXTRA_ARG_WARNINGS和__PRAGMA_POP_NO_EXTRA_ARG_WARNINGS是为了忽略编译器警告。它们其实是这样的
#define __PRAGMA_PUSH_NO_EXTRA_ARG_WARNINGS _Pragma