0

如果我们在使用 NSLogs 的设备上运行应用程序,那么它可能会在一定程度上降低应用程序的速度。

NSAssert 在内存方面的行为方式是否与 NSLog 相同?

任何意见或建议将不胜感激。

先感谢您。

4

2 回答 2

2

也许这会回答你的问题

需要注意的是,从 Xcode 4.2 开始,对于发布版本,断言默认关闭,这是通过定义 NS_BLOCK_ASSERTIONS 宏来完成的。也就是说,在编译发布时,对 NSAssert & co. 的任何调用。被有效去除。

资料来源: http: //nshipster.com/nsassertionhandler/

如果您启用它们,那么是的,它们是有代价的(显然它们需要被评估),并且取决于您让它们执行的代码,它会有所不同。对于简单的 nil 比较,它可以忽略不计。

如需进一步参考,请参阅: http: //www.mikeash.com/pyblog/friday-qa-2013-05-03-proper-use-of-asserts.html

特别是这段

运行时成本应该可以忽略不计,如果不是,那么你应该重做断言来解决这个问题。

于 2013-12-10T14:57:06.233 回答
1

In XCode, by default assertion are disabled in release, so they won't take any processing time. If you check in your build settings, NS_BLOCK_ASSERTIONS is set to 1 and looking at the NSAssert define in that case

#define NSAssert(condition, desc, ...) do {} while (0)

empty loop that will be removed at compilation time.

于 2013-12-10T14:58:24.043 回答