NSAssert会在iOS上的设备上占用任何内存吗?

时间:2013-12-10 14:52:42

标签: ios objective-c nsassert

如果我们在具有NSLogs的设备上运行应用程序,那么它可能会在某种程度上减慢应用程序的速度。

NSAssert在内存方面的作用与NSLog相同吗?

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

提前谢谢。

2 个答案:

答案 0 :(得分:2)

也许这会回答你的问题

  

重要的是要注意,从Xcode 4.2开始,断言被关闭   默认情况下,发布版本通过定义来完成   NS_BLOCK_ASSERTIONS宏。也就是说,编译发布时,   任何对NSAssert&合。被有效删除。

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

如果你让它们保持启用状态,那么它们是有代价的(显然它们需要被评估),并且根据你执行它们的代码而不同。对于简单的零比较,它可以忽略不计。

有关详细信息,请参阅:http://www.mikeash.com/pyblog/friday-qa-2013-05-03-proper-use-of-asserts.html

特别是这段话

  

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

答案 1 :(得分:1)

在XCode中,默认情况下断言在发布时被禁用,因此它们不会占用任何处理时间。如果您签入构建设置,则NS_BLOCK_ASSERTIONS设置为1并在此情况下查看NSAssert定义

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

将在编译时删除的空循环。