代码中断言的使用NSAssert、NSParameterAssert
2016-07-27 15:00
706 查看
在开发中,常常会遇到传参的情况,这时候就需要对参数进行有效判断,以保证传递的参数是真实有效的。
而在判断时,通常的方法无非就是if...else...之类的使用。
其实在开发阶段为了保证参数有真实有效性,我们还可以使用断言进行参数的异常处理。
常用的断言有NSAssert、NSParameterAssert。
NSAssert和NSParameterAssert的都是系统宏定义。
使用方法如下所示
在开发阶段使用了断言后,如果参数异常且在模拟器上运行时则会直接导致应用程序闪退,而如果在真机设备上运行则不会闪退。
而在判断时,通常的方法无非就是if...else...之类的使用。
其实在开发阶段为了保证参数有真实有效性,我们还可以使用断言进行参数的异常处理。
常用的断言有NSAssert、NSParameterAssert。
NSAssert和NSParameterAssert的都是系统宏定义。
#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
#define NSParameterAssert(condition) NSAssert((condition), @"Invalid parameter not satisfying: %@", @#condition)
使用方法如下所示
// 方法1 NSAssert(self.hostUrl.host != nil, @"self.hostUrl must be non-nil"); // 方法2 NSParameterAssert(self.hostUrl.host);
在开发阶段使用了断言后,如果参数异常且在模拟器上运行时则会直接导致应用程序闪退,而如果在真机设备上运行则不会闪退。
相关文章推荐
- java过滤Emoji表情
- Java集合总结
- Java解码网页表单post内容小记
- 如何通过Gradle实现一套代码开发不同特性的APK
- Github学习笔记2
- python入门笔记
- Spring过滤json中的XSS
- 用string.Join与List<T>或者与string数组转换为字符串
- Python 第三方模块安装出现的问题和解决方案.
- java 异常处理
- java设计模式之访问者模式
- python--multiprocessing多进程总结
- c++ 内存管理
- install java on ubuntu and set defalut java version
- C++拷贝构造函数详解
- 错误:fatal error C1189: #error : The C++ Standard Library forbids macroizing keywords. Enable warning
- 解决asp.net mvc的跨域请求问题
- java内存溢出的几种情况
- EMQTT测试--安装与测试
- 5-31 笛卡尔树