相关疑难解决方法(0)

Objective-C:断言与异常与错误

在Cocoa中,何时应该使用NSAssert,NSException,NSError?

这就是我一直在想的:

NSAssert - 在创建任何用于程序员自身利益的客户端程序时,可以仔细检查规则,约定,假设或前置条件和后置条件?

NSException - 为了使用该库的其他程序员的利益创建第三方库,以便他们立即知道输入何时无效?

NSError - 当与外部系统连接以获取不保证给我结果的文件,数据库或Web服务等数据时?

cocoa conventions objective-c

79
推荐指数
1
解决办法
2万
查看次数

Xcode 5相当于Build Settings中的NS_BLOCK_ASSERTIONS

在Xcode 5之前,可以NSAssert使用默认的构建设置阻止发布版本包含语句及其变体:

OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
Run Code Online (Sandbox Code Playgroud)

此设置可project.pbxproj在此处找到并在Xcode中设置:

在此输入图像描述

(请注意,此抓取是从转换为Xcode 5的Xcode 4项目中获取的.)

每个目标只在Release版本中继承此设置.显然这是一件好事.该应用程序可能无论如何都会挣扎,而不是立即崩溃.而对于Debug版本,您希望在NSAssert失败时立即知道.

但是,我很难找到Xcode 5中的等价物.

使用默认模板创建新项目不会显示等效设置:

在此输入图像描述

我的问题是,Xcode 5中的等效设置是什么,还是NS_BLOCK_ASSERTIONS必须手动添加到Other C FlagsRelease版本中?

compiler-construction xcode build compiler-flags xcode5

11
推荐指数
1
解决办法
2151
查看次数

NS_BLOCK_ASSERTIONS是否同时禁用NSAssert和assert()调用?

是否NS_BLOCK_ASSERTIONS仅关闭NSAssert呼叫或assert()呼叫.我的应用程序在assert(...)声明行的发布模式下崩溃.

文档仅说明NSAssert并且不会告知assert()呼叫是否被禁用.

有几个与我有关的问题没有回答.我在这里链接他们:

Objective-C中的NS_BLOCK_ASSERTIONS
NSAssert与断言:您使用哪种,何时使用?
如何知道在发布版本中是否禁用了NSAssert?

iphone objective-c ios

3
推荐指数
1
解决办法
1720
查看次数