NSAssert
和 和有什么不一样NSCAssert
?当我探索他们的实现时,它们看起来非常相似,我找不到我的问题的答案。
我想它也会解释 和 之间的NSParameterAssert
区别NSCParameterAssert
。
NSAssert
和 和有什么不一样NSCAssert
?当我探索他们的实现时,它们看起来非常相似,我找不到我的问题的答案。
我想它也会解释 和 之间的NSParameterAssert
区别NSCParameterAssert
。
第二个是C 和Objective-C 断言之间的区别:NSAssert 只能用于Objective-C 上下文(即方法实现),而NSCAssert 只能用于C 上下文(即函数)。
请注意,在块中使用 NSAssert/NSParameterAssert 可能会导致保留循环。请改用 C 变体。Google NSAssert 保留周期
这取自 NSHipster,见链接
Foundation 定义了两对断言宏:
NSAssert/NSCAssert
NSParameterAssert/NSCParameterAssert
Foundation 在其断言处理程序 API 中有两个区别,即语义上的和功能上的。
第一个区别是一般断言 (
NSAssert
) 和参数断言 (NSParameterAssert
)。根据经验,方法/函数应该使用NSParameterAssert/NSCParameterAssert
方法顶部的语句来强制执行有关输入值的任何先决条件;在所有其他情况下,使用NSAssert/NSCAssert
.第二个是 C 和 Objective-C 断言之间的区别:
NSAssert
应该只在 Objective-C 上下文中使用(即方法实现),而 NSCAssert 应该只在 C 上下文中使用(即函数)。
NSAssert 应该只在Objective-C 上下文中使用,而NSCAssert 应该只在C 上下文中使用(即函数)。