IOS 使用NSAssert()和NSParameterAssert调试程序
IOS使用NSAssert()和NSParameterAssert调试程序
NSAssert:
NSAssert()只是一个宏,用于开发阶段调试程序中的Bug,通过为NSAssert()传递条件表达式来断定是否属于Bug,满足条件返回真值,程序继续运行,如果返回假值,则抛出异常,并切可以自定义异常描述。NSAssert()是这样定义的:
#defineNSAssert(condition,desc)
condition是条件表达式,值为YES或NO;desc为异常描述,通常为NSString。当conditon为YES时程序继续运行,为NO时,则抛出带有desc描述的异常信息。NSAssert()可以出现在程序的任何一个位置。
下面介绍NSParameterAssert
断言评估一个条件,如果条件为false,调用当前线程的断点句柄。每一个线程有它自已的断点句柄,它是一个NSAsserttionHandler类的对象。当被调用时,断言句柄打印一个错误信息,该条信息中包含了方法名、类名或函数名。然后,它就抛出一个NSInternalInconsistencyException异常。
Assertionsevaluateaconditionand,iftheconditionevaluatestofalse, calltheassertionhandlerforthecurrentthread,passingitaformat stringandavariablenumberofarguments.Eachthreadhasitsownassertionhandler, whichisanobjectofclassNSAssertionHandler.Wheninvoked,anassertion handlerprintsanerrormessagethatincludesmethodandclassnames(orthefunctionname). ItthenraisesanNSInternalInconsistencyExceptionexception.
这个宏用于确认一个Objective-C的方法的有效性。简单提供参数作为条件就行。该宏评估这个参数,如果为false,它就打印一个错误日志信息,该信息包含了参数并且抛出一个异常。
ThismacrovalidatesaparameterforanObjective-Cmethod.Simplyprovidethe parameterastheconditionargument.Themacroevaluatestheparameterand, ifitisfalse,itlogsanerrormessagethatincludestheparameterandthenraisesanexception.
如果定义了预处理宏NS_BLOCK_ASSERTIONS断言就被禁止了。所有的断点宏都返回void。
AssertionsaredisabledifthepreprocessormacroNS_BLOCK_ASSERTIONSisdefined. Allassertionmacrosreturnvoid.
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!