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 that evaluates to YES or NO.

值为 YES 或 NO 的表达式

desc

An NSString object that contains a printf-style string containing an error message describing the failure condition and placeholders for the arguments.

...

The arguments displayed in the desc string.

Discussion

The NSAssert macro evaluates the condition and serves as a front end to the assertion handler.

Each thread has its own assertion handler, which is an object of class NSAssertionHandler. When invoked, an assertion handler prints an error message that includes the method and class names (or the function name). It then raises an NSInternalInconsistencyException exception. If condition evaluates to NO, the macro invokes handleFailureInMethod:object:file:lineNumber:description: on the assertion handler for the current thread, passing descas the description string.

This macro should be used only within Objective-C methods.

Assertions are disabled if the preprocessor macro NS_BLOCK_ASSERTIONS is defined.

IMPORTANT

Do not call functions with side effects in the condition parameter of this macro. The condition parameter is not evaluated when assertions are disabled, so if you call functions with side effects, those functions may never get called when you build the project in a non-debug configuration.

NOTE

Not all release configurations disable assertions by default.

时间: 2024-10-10 22:01:45

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 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描述

[转]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]