在obj-c中的try / catch外面断言

时间:2012-03-28 17:52:19

标签: objective-c assert

今天我想我可能已经学到了一些东西(不确定),我不是一个真正的obj-c程序员,更多的是php& java类型,但与某人一起建立一个iPhone应用程序让我这样,所以希望有人可以帮我解释什么和为什么:

我已经在@try {..}@catch (NSException * e) {..}中添加了一些代码,我的想法就是所有内容都会被抓住,但是其他开发人员放置了assert(false); de catch之后的功能。

为什么?

1 个答案:

答案 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)将使该程序崩溃。