使用断言NSAssert()和NSParameterAssert调试程序错误

NSAssert()只是一个宏,用于开发阶段调试程序中的Bug,经过为NSAssert()传递条件表达式来判定是否属于Bug,知足条件返回真值,程序继续运行,若是返回假值,则抛出异常,并切能够自定义异常描述。NSAssert()是这样定义的:ide

#define NSAssert(condition, desc)函数

condition是条件表达式,值为YES或NO;desc为异常描述,一般为NSString。当conditon为YES时程序继续运行,为NO时,则抛出带有desc描述的异常信息。NSAssert()能够出如今程序的任何一个位置。lua

 

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.orm

相关文章
相关标签/搜索