NSAssert知识

assert 是C里面的宏。用于断言。

NSAssert 类似于NSLog(),方便易用。但她只能在Objective-c里面使用。是assert的一个扩充。能捕获assert类异常及打印一些可读的日志。而assert只是让app crash(abort)。

NSAssert(断言)是指在开发期间使用的、让程序在运行时进行自检的代码。断言为真,则表明程序运行正常,而断言为假,则意味着它已经在代码中发现了意料之外的错误。断言对于大型的复杂程序或可靠性要求极高的程序来说尤其有用。

NSAssert是foundation.framework中定义的一个宏:#define NSAssert(condition, desc, ...)第一个参数为一个条件判断,如果为假,则抛出异常,显示第二个参数所描述的信息。

比如:程序中会使用NSAssert(param.count==3,@"传入的参数不符合预期"); 以在debug模式下,校验数组param传入的参数个数是否正确,如果不正确则会打印日志:"传入的参数不符合预期",方便我们调试程序。

在release模式下运行,不终止程序不抛出异常,这样做很方便调试程序。当在真机中时,会自动忽略。调试cocoa程序在程序出错时,不会马上停止。使用宏NSAssert可以让程序出错时马上抛出异常。在debug情况下,所有NSAssert都会被执行。在release下不希望NSAssert被执行,我们通常在release种将断言设置成禁用。设置方法:在targets种选择build,选择release。

关于Xcode开发模式中的release与debug模式,请参考如下链接: http://my.oschina.net/leejan97/blog/296920

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,256评论 19 139
  • 目录:1、播放系统音频2、更改状态栏颜色3、图片填充4、图片切圆5、沙盒路径6、各个字段的含义7、dispatch...
    my_杨哥阅读 645评论 1 7
  • Xcode 已经默认将release环境下的断言取消了, 免除了忘记关闭断言造成的程序不稳定. 所以不用担心 在开...
    Crazy2015阅读 1,513评论 0 1
  • 简介 C++98/03的设计目标:一、比C语言更适合系统编程(且与C语言兼容)。二、支持数据抽象。三、支持面向对象...
    认真学计算机阅读 5,394评论 0 53
  • 今天是大年三十啦!除了年夜饭外,央视春晚应该也是家家户户的“娱乐年夜饭”吧。从央视春晚官方昨晚最新公布的节目单来看...
    力量时评阅读 539评论 0 7