美文网首页
NSAssert断言

NSAssert断言

作者: GoCac | 来源:发表于2016-01-18 21:55 被阅读50次

NSAssert与assert

NSAssert和assert是断言,主要的差别是assert在断言失败的时候只是简单的终止程序,而NSAssert会报告出错误信息并且打印出来。

NSAssert与NSCAssert

两者的差别通过定义可以看出来, 前者是适合于Objective-C的方法,_cmd 和 self 与运行时有关. 后者是适用于C的函数。
#if !defined(NS_BLOCK_ASSERTIONS)
#if !defined(_NSAssertBody)
#define NSAssert(condition, desc, ...)
do {
__PRAGMA_PUSH_NO_EXTRA_ARG_WARNINGS
if (!(condition)) {
[[NSAssertionHandler currentHandler] handleFailureInMethod:_cmd
object:self file:[NSString stringWithUTF8String:FILE]
lineNumber:LINE description:(desc), ##VA_ARGS];
}
__PRAGMA_POP_NO_EXTRA_ARG_WARNINGS
} while(0)
#endif
#if !defined(_NSCAssertBody)
#define NSCAssert(condition, desc, ...)
do {
__PRAGMA_PUSH_NO_EXTRA_ARG_WARNINGS
if (!(condition)) {
[[NSAssertionHandler currentHandler] handleFailureInFunction:[NSString stringWithUTF8String:PRETTY_FUNCTION]
file:[NSString stringWithUTF8String:FILE]
lineNumber:LINE description:(desc), ##VA_ARGS];
}
__PRAGMA_POP_NO_EXTRA_ARG_WARNINGS
} while(0)
#endif

NSParameterAssert与NSCparameterAssert

两者的区别也是前者适用于Objective-C的方法,后者适用于C的函数。

NSAssert/NSCAssert 与NSParameterAssert/NSCparameterAssert

区别是前者是所有断言, 后者只是针对参数是否存在的断言, 所以可以先进行参数的断言,确认参数是正确的,再进行所有的断言,确认其他原因。

NOTE:Xcode 已经默认将release环境下的断言取消了, 免除了忘记关闭断言造成的程序不稳定.

NSAssertionHandler 自定义处理方法,程序不会直接崩溃

NSAssertionHandler实例是自动创建的,用于处理错误断言。 如果 NSAssert和NSCAssert条件评估为错误,会向 NSAssertionHandler实例发送一个表示错误的字符串。每个线程都有它自己的NSAssertionHandler实例。

相关文章

  • 断言NSAssert

    NSAssert与assert NSAssert和assert是断言,主要的差别是assert在断言失败的时候只是...

  • NSAssert断言

    NSAssert与assert NSAssert和assert是断言,主要的差别是assert在断言失败的时候只是...

  • iOS一些开发中需要积累的知识

    1.NSAssert 调试的好帮手.断言 Exampe: NSAssert( x != 0, @"an erorr...

  • HQ移动20170317期周报

    1. NSAssert() 和 NSCAssert()的使用 NSAssert()用于 OC 语法的断言NSCAs...

  • NSAssert 断言

    NSAssert 是c语言的一个宏定义。 看一下具体定义: 具体使用: NSAssert(condition, ...

  • NSAssert断言

    今天运行代码遇到了NSAssert断言,这里做一个学习记录。 形式 官方文档链接 作用 在condition为fa...

  • 断言NSAssert

    开发ios程序时调试的好帮手---NSAssert()函数。而且和NSLog()函数一样简单易用,代码如下: N...

  • NSAssert(断言)

    NSAssert()是一个宏,用于开发阶段调试程序中的Bug,通过为NSAssert()传递条件表达式来断定是否属...

  • 断言: NSAssert()

    格式 NSAssert(condition, desc, ...) 作用: condition 不为空时断言为真,...

  • NSAssert断言

    就是判断条件是否满足,满足的话就往下执行,不满足就抛出信息,然后崩溃,用于开发调试,上线的话需关闭。 NSAsse...

网友评论

      本文标题:NSAssert断言

      本文链接:https://www.haomeiwen.com/subject/rgmkkttx.html