我经常在iOS代码中看到"assert",我用谷歌搜索它,并知道它assert true或false.
我想知道这是否会在释放模式下自动禁用?
我经常在iOS代码中看到"assert",我用谷歌搜索它,并知道它assert true或false.
我想知道这是否会在释放模式下自动禁用?
使用NSAssert()及其同伴.
在项目中,为发布配置定义NS_BLOCK_ASSERTIONS
.
Xcode 4在发布配置中禁用NSAsserts
.它补充道
-DNS_BLOCK_ASSERTIONS=1
至"其他C标志"表示"发布".
从文件中:
如果定义了预处理器宏NS_BLOCK_ASSERTIONS
,则将禁用断言.
NSAssert宏判断条件,并充当断言处理程序的前端.
每个线程都有自己的断言处理程序,它是类NSAssertionHandler
的对象.调用时,断言处理程序会打印一条错误消息,其中包括方法和类名(或函数名).然后它引发了一个NSInternalInconsistencyException
例外.如果条件的计算结果为否,则宏将在当前线程的断言处理程序上调用handleFailureInMethod:object:file:lineNumber:description:
,并将desc作为描述字符串传递.
此宏只能在Objective-C方法中使用.