今天我想我可能已经学到了一些东西(不确定),我不是一个真正的obj-c程序员,更多的是php& java类型,但与某人一起建立一个iPhone应用程序让我这样,所以希望有人可以帮我解释什么和为什么:
我已经在@try {..}
和@catch (NSException * e) {..}
中添加了一些代码,我的想法就是所有内容都会被抓住,但是其他开发人员放置了assert(false);
de catch之后的功能。
为什么?
答案 0 :(得分:1)
assert(3)
不是Objective-C本身的一部分。它是C标准的一部分。查看man page。从C规范中, 7.2.1.1 assert
宏:
<强>概要强>
#include <assert.h> void assert(scalar expression);
<强>描述强>
assert
宏将诊断测试放入程序中;它扩展为void表达式。执行时,如果expression
(应具有标量类型)为false(即比较等于0),则assert
宏写入有关失败的特定调用的信息(包括参数的文本,源文件的名称,源行号和封闭函数的名称 - 后者分别是预处理宏的值__FILE__
和__LINE__
以及标识符__func__
)格式。然后它会调用abort
函数。
因此,assert(false)
将使该程序崩溃。