我经常在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方法中使用.

Objective-c相关问答推荐

日期更改时的 UIDatePicker

在 iOS 7 上,如果最终包含在选项卡栏控制器中,则使用工具栏推送控制器会留下不可用空间的间隙

Objective-c 点表示法或方括号表示法中首选什么?

如何获取目标名称?

如何在运行时向对象添加属性?

在子类中覆盖init

将长按手势和拖动手势结合在一起

UISearchbar 键盘搜索按钮操作

判断用户是否在连续的 UISlider 上完成滑动?

进入编辑模式时动画自定义绘制的 UITableViewCell

属性与实例变量

我应该使用 NSUserDefaults 还是 plist 来存储数据?

更改 UISearchBar 的字体大小

MKAnnotation 图像偏移与自定义引脚图像

#ifdef DEBUG 与 #if DEBUG

可变集合有文字语法吗?

在 DEBUG 模式下启用和禁用 NSLog

判断文件是否存在于路径中

iOS 10 中的错误:无法从 https://mesu.apple.com/assets/ 复制assets资源信息以获取assets资源类型

如何在没有死锁的情况下同步调度主队列?