[转]NSAssert的使用

NSAssert的使用

苹果在foundation.framework中定义了这么一个宏:

#define NSAssert(condition, desc, ...)

第一个参数为一个条件判断,如果为假,则抛出异常,显示第二个参数所描述的信息。

例如

NSAssert(2>=4.4, @"2>=4.4 is false!");

在debug模式下运行,会终止程序,并抛出如下异常:

2013-04-24 09:24:16.618 TestAssertion[825:c07] *** Terminating app due to uncaught exception ‘NSInternalInconsistencyException‘, reason: ‘2>=4.4 is false!‘

在release模式下运行,不终止程序不抛出异常。

这样方便调试程序。

时间: 2024-10-30 18:47:07

[转]NSAssert的使用的相关文章

NSAssert详解

NSAssert是foundation.framework中定义的一个宏:#define NSAssert(condition, desc, ...)第一个参数为一个条件判断,如果为假,则抛出异常,显示第二个参数所描述的信息. 例如:NSAssert(2>=3, @"2>=3 is false!");在debug模式下运行,会终止程序,并抛出如下异常:2013-04-24 09:24:16.618 TestAssertion[825:c07] *** Terminating

IOS中调试的辅助宏 NSAssert

NSAssert函数: 1 NSAssert(condition, desc, ...); 1. condition:条件,如果条件满足则程序正常之行,如果条件不满足则程序崩溃,奔溃的信息可以由后面的desc来打印出来: 实例如下: NSInteger age = 10; NSAssert(age == 01, @"the condition is not right -%s--%s---%d",__FILE__,__FUNCTION__,__LINE__); 这时打印出来的信息为:

NSAssert使用

断言使用:断言的第一个参数为NO时,程序执行到这里时就会崩溃并原文打印第二个参数. @implementation People - (void)eat{    BOOL isB = NO;    if (3 > 4)    {        isB = YES;     }    NSAssert(isB == YES, @"要崩溃了");//断言的第一个参数为NO时,程序执行到这里时就会崩溃并原文打印第二个参数.} @end

小心一些,断言可能让你的造成循环引用NSAssert

block和self的相互引用造成的循环引用,想必大家都是明白的.上下面的代码(截取部分) __weak typeof(self) weakSelf = self; self.jsBridgeFunctionDic = @{ JSBridgeCallNativePage: ^(NSDictionary *data){ NSLog(@"JSBridgeCallNativePage"); NSDictionary *params = [data dictionaryForKey:@&quo

NSAssert

首先,NSAssert 是 foundation.framework 框架中的一个宏定义,作为断点检查的条件信息.如果给他一个 false 条件,会生成一个断点检查. NSAssert Generates an assertion if a given condition is false. Declaration 声明 OBJECTIVE-C #define NSAssert(condition, desc, ...) Parameters 参数 condition An expression

NSAssert NSCAssert NSParameterAssert

@这里给介绍几个系统给我们,很方便进行程序调试,定位错误的宏 我们写程序时,对于不放心或容易报错的地方,可以加上这个代码 #define NSAssert(condition, desc, ...) #define NSCAssert(condition, desc, ...) 第一个参数为一个条件判断,如果为假,则抛出异常,显示第二个参数所描述的信息(定义为自己能看的很明白的错误提示信息). 例如: NSString *test = @"HMT"; NSAssert([test is

NSAssert,NSCassert

在苹果的SDK中可以看到这两个都是定义的宏 NSAssert 的定义如下: #define NSAssert(condition, desc, ...) do { __PRAGMA_PUSH_NO_EXTRA_ARG_WARNINGS if (!(condition)) { [[NSAssertionHandler currentHandler] handleFailureInMethod:_cmd object:self file:[NSString stringWithUTF8String:

【转】使用断言NSAssert()调试程序错误

NSAssert()只是一个宏,用于开发阶段调试程序中的Bug,通过为NSAssert()传递条件表达式来断定是否属于Bug,满足条件返回真值,程序继续运行,如果返回假值,则抛出异常,并切可以自定义异常描述.NSAssert()是这样定义的: #define NSAssert(condition, desc) condition是条件表达式,值为YES或NO:desc为异常描述,通常为NSString.当conditon为YES时程序继续运行,为NO时,则抛出带有desc描述的异常信息.NSAs

使用NSAssert()和NSParameterAssert调试程序

NSAssert: NSAssert()只是一个宏,用于开发阶段调试程序中的Bug,通过为NSAssert()传递条件表达式来断定是否属于Bug,满足条件返回真值,程序继续运行,如果返回假值,则抛出异常,并切可以自定义异常描述.NSAssert()是这样定义的: #define NSAssert(condition, desc) condition是条件表达式,值为YES或NO:desc为异常描述,通常为NSString.当conditon为YES时程序继续运行,为NO时,则抛出带有desc描述