代码中断言的使用NSAssert、NSParameterAssert

本文介绍了在iOS开发中如何使用NSAssert和NSParameterAssert进行参数有效性判断,以确保在开发阶段能及时发现并处理异常情况。这两种断言是用于调试阶段的宏定义,帮助开发者确保传入参数符合预期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开发中,常常会遇到传参的情况,这时候就需要对参数进行有效判断,以保证传递的参数是真实有效的。

而在判断时,通常的方法无非就是if...else...之类的使用。

其实在开发阶段为了保证参数有真实有效性,我们还可以使用断言进行参数的异常处理。

常用的断言有NSAssert、NSParameterAssert。

NSAssert和NSParameterAssert的都是系统宏定义。

#define NSAssert(condition, desc, ...)	\
    do {				\
	__PRAGMA_PUSH_NO_EXTRA_ARG_WARNINGS \
	if (!(condition)) {		\
            NSString *__assert_file__ = [NSString stringWithUTF8String:__FILE__]; \
            __assert_file__ = __assert_file__ ? __assert_file__ : @"<Unknown File>"; \
	    [[NSAssertionHandler currentHandler] handleFailureInMethod:_cmd \
		object:self file:__assert_file__ \
	    	lineNumber:__LINE__ description:(desc), ##__VA_ARGS__]; \
	}				\
        __PRAGMA_POP_NO_EXTRA_ARG_WARNINGS \
    } while(0)
#endif
#define NSParameterAssert(condition) NSAssert((condition), @"Invalid parameter not satisfying: %@", @#condition)


使用方法如下所示

// 方法1
NSAssert(self.hostUrl.host != nil, @"self.hostUrl must be non-nil");
// 方法2
NSParameterAssert(self.hostUrl.host);

在开发阶段使用了断言后,如果参数异常且在模拟器上运行时则会直接导致应用程序闪退,而如果在真机设备上运行则不会闪退。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

番薯大佬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值