使用断言NSAssert()和NSParameterAssert调试程序错误
来源:互联网 发布:手机定时自动关机软件 编辑:程序博客网 时间:2024/05/17 23:47
#define NSAssert(condition, desc)
condition是条件表达式,值为YES或NO;desc为异常描述,通常为NSString。当conditon为YES时程序继续运行,为NO时,则抛出带有desc描述的异常信息。NSAssert()可以出现在程序的任何一个位置。具体事例如下:
生成一个LotteryEntry对象时,传入的NSDate不能为nil,加入NSAssert()判断。对象初始化源码如下:
- (id)initWithEntryDate:(NSDate
}
接下来则是生成对象时传入一个值为nil的NSDate,看断言是否运行。
LotteryEntry
断言效果如下:
2013-01-17 20:49:12.486 lottery[3951:303] *** Terminating app due to uncaught exception 'NSInternalInconsistencyE
下面介绍NSParameterAssert
断言评估一个条件,如果条件为 false ,调用当前线程的断点句柄。每一个线程有它自已的断点句柄,它是一个 NSAsserttionHandler 类的对象。当被调用时,断言句柄打印一个错误信息,该条信息中包含了方法名、类名或函数名。然后,它就抛出一个 NSInternalInconsistencyException 异常。
Assertions evaluate a condition and, if the condition evaluates to false, call the assertion handler for the current thread, passing it a format string and a variable number of arguments. Each thread has its own assertion handler, which is an object of classNSAssertionHandler. When invoked, an assertion handler prints an error message that includes method and class names (or the function name). It then raises anNSInternalInconsistencyException exception.
这个宏用于确认一个 Objective-C 的方法的有效性。简单提供参数作为条件就行。该宏评估这个参数,如果为 false ,它就打印一个错误日志信息,该信息包含了参数并且抛出一个异常。
This macro validates a parameter for an Objective-C method. Simply provide the parameter as the condition argument. The macro evaluates the parameter and, if it is false, it logs an error message that includes the parameter and then raises an exception.
如果定义了预处理宏 NS_BLOCK_ASSERTIONS 断言就被禁止了。所有的断点宏都返回 void。
Assertions are disabled if the preprocessor macro NS_BLOCK_ASSERTIONS is defined. All assertion macros return void.
- (DKColorPicker)pickerWithKey:(NSString *)key {
NSParameterAssert(key);
NSDictionary *themeToColorDictionary = [self.tablevalueForKey:key];
DKColorPicker picker = ^(DKThemeVersion *themeVersion) {
return [themeToColorDictionaryvalueForKey:themeVersion];
};
return picker;
}
- 使用断言NSAssert()和NSParameterAssert调试程序错误
- 使用断言NSAssert()和NSParameterAssert调试程序错误
- 使用断言NSAssert()和NSParameterAssert调试程序错误
- 使用NSAssert()和NSParameterAssert调试程序
- 断言NSAssert()和NSParameterAssert
- iOS 使用断言NSAssert()调试程序错误
- 使用断言NSAssert()调试程序错误
- 使用断言NSAssert()调试程序错误
- 使用断言NSAssert()调试程序错误
- iOS 使用断言NSAssert()调试程序错误
- 断言NSAssert()和NSParameterAssert区别和用处
- 断言NSAssert()和NSParameterAssert区别和用处
- 代码中断言的使用NSAssert、NSParameterAssert
- [IOS 开发] 使用断言NSAssert()调试程序错误
- iOS 断言 NSAssert的使用 调试程序错误
- NSAssert和NSParameterAssert
- NSAssert和NSParameterAssert
- 断言NSAssert()-调试程序中的Bug
- 安装Keras(Windows10)
- mysql 查询缓存
- js控制多种css样式依次显示
- LitePal
- URI is not registered 解决方案(android studio异常关闭导致的问题)
- 使用断言NSAssert()和NSParameterAssert调试程序错误
- jsonp请求(ajax与vuejs)
- 使用SoapUI 测试Web Service
- Docker构建Redis镜像
- js阻止事件冒泡的两种方法
- 最接近零的子数组和
- 8583报文解析实例
- vR语言本地下载包的方法
- MFC中定时器OnTimer函数的使用