如果我们在具有NSLogs的设备上运行应用程序,那么它可能会在某种程度上减慢应用程序的速度。
NSAssert在内存方面的作用与NSLog相同吗?
任何意见或建议都将不胜感激。
提前谢谢。
答案 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)
将在编译时删除的空循环。