NSAssert()和NSParameterAssert()的使用

NSAssert()是个宏,用于开发阶段调试程序中的Bug,通过为NSAssert()传递条件表达式来断定是否属于Bug,满足条件返回真值,程序继续运行,如果返回假值,则抛出异常,并且可以自定义异常描述,NSAssert()可以出现在程序的任何一个位置。

#define NSAssert(condition, desc);可以点击进去看下如何定义的
用法:
NSString *name;
NSAssert([name isEqualToString:@"Dely"],@"名字必须为Dely哦");

异常信息:定位到问题类的某一行

2016-11-11 18:18:34.598 RuntimeDemo[1415:64564] <strong><em> Assertion failure in -[ViewController viewDidLoad], /Users/admin/Desktop/Projects/RuntimeDemo/RuntimeDemo/ViewController.m:23
2016-11-11 18:18:34.601 RuntimeDemo[1415:64564] </em></strong> Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '名字必须为Dely哦'

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

Xcode 已经默认将release环境下的断言取消了, 免除了忘记关闭断言造成的程序不稳定. 所以不用担心 在开发时候大胆使用。

断言开启.png

总结:NSAssert/NSCAssert和 NSParameterAssert/NSCparameterAssert 的区别是前者是针对条件断言, 后者只是针对参数是否存在的断言。

来源地址:http://www.jianshu.com/p/edf9224c312e

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • NSAssert()是一个宏,用于开发阶段调试程序中的Bug,通过为NSAssert()传递条件表达式来断定是否属...
    小木___Boy阅读 42,879评论 5 103
  • Xcode 已经默认将release环境下的断言取消了, 免除了忘记关闭断言造成的程序不稳定. 所以不用担心 在开...
    Crazy2015阅读 1,487评论 0 1
  • NSAssert()是一个宏,用于开发阶段调试程序中的Bug,通过为NSAssert()传递条件表达式来断定是否属...
    贝勒老爷阅读 7,165评论 0 10
  • 1. 有次看《最强大脑》doctor魏和郭敬明互撕。 刚开始的时候,两个人分别从科学家的角度和普通人的视角表达了自...
    _KD阅读 622评论 6 7