NSAssert用法
来源:互联网 发布:js 添加disable属性 编辑:程序博客网 时间:2024/05/17 04:53
什么是assert
assert是断言、简单来讲、就是代码的作者认定这个条件一定要是能满足断言的条件、否则代码不满足最基本的条件也就不用再运行下去、防止错误的代码引起更深层的问题。
if (条件成立){}else { 中断程序}
NSAssert的定义如下
#define NSAssert(condition, desc, ...) \ do { \ __PRAGMA_PUSH_NO_EXTRA_ARG_WARNINGS \ if (!(condition)) { \ NSString *__assert_file__ = [NSString stringWithUTF8String:__FILE__]; \ __assert_file__ = __assert_file__ ? __assert_file__ : @"<Unknown File>"; \ [[NSAssertionHandler currentHandler] handleFailureInMethod:_cmd \ object:self file:__assert_file__ \ lineNumber:__LINE__ description:(desc), ##__VA_ARGS__]; \ } \ __PRAGMA_POP_NO_EXTRA_ARG_WARNINGS \ } while(0)#endif
我们来看下NSAssert的效果:
NSAssert(0, @”0”);
log如下:
* Assertion failure in -[HomeViewController viewDidLoad], /Documents/APP代码/Home/Controllers/TNHomeViewController.m:248
NSAssert不会像assert、直接中断程序、而是会停在的断点、然后仍然可以继续进行程序。
注意事项
- assert只会在debug模式下起作用、所以assert应该只用过错误处理、而不是异常处理。如果是防卫性编程、请使用异常处理
- assert 会占用较多的系统资源
- assert一次最好只关注一个条件、不要同时去判断多个条件、有利于捕捉错误。
ps:为什么宏的定义里面有do while(0),可以参考do while(0)的妙用
0 0
- NSAssert用法
- NSAssert用法
- NSAssert用法
- NSAssert()的用法
- Xcode 中 NSAssert() 的用法
- NSAssert
- NSAssert()
- NSAssert
- NSAssert()
- NSAssert()
- NSAssert
- iOS版try cacth -- NSAssert用法
- 关于 Xcode 中 NSAssert() 的用法 ,以及 assert() 与 NDEBUG
- 关于 Xcode 中 NSAssert() 的用法 ,以及 assert() 与 NDEBUG
- iPhone-NSAssert
- NSAssert,NSCassert
- iOS NSAssert
- 使用NSAssert
- apache配置vhosts
- 用Android Studio编译StrongSwan源码
- BZOJ3561: DZY Loves Math VI
- 网站打开之后ie浏览器都是杂项模式该如何处理
- 关于angularjs $asyncValidators $http的异步验证扩展踩过的那些坑
- NSAssert用法
- [LeetCode]279. Perfect Squares
- How Broswers Work<二>渲染引擎(3)--HTML解析
- 开源项目总结帖(整理自Trinea的github)
- web.xml文件中session的设置
- De 30: Decoupling Linear Systems with Constant Coefficients
- 每日一得--Eclipse去除js(JavaScript)验证错误
- 希望改变方法&test()内部的变量值$b
- Apple pay初探