NSParameterAssert延伸出去的理解

        今天在看公司同事代码的时候,发现同事用了NSParameterAssert这个函数来检查参数值。

+ (void)getUrlForUploadPicture:(NSString *)pictureFile
               completionBlock:(UploadPictureCompletionBlock)completionBlock
{
    NSParameterAssert(pictureFile);
}
        比如上面的方法,这个方法中使用NSParameterAssert来检验pictureFile这个参数的值,如果为nil或NULL,那么此时程序终止,并打印错误信息。

        我的疑问一直停留在要是应用上线之后还用这个函数,那不是很危险吗,用户的使用过程中如果发生问题应用直接崩溃,用户体验是极差的。然后网上看了一些资料,说的是在debug版本下程序才会abort,在release版本则不会。

        附上苹果的文档说明:

Validates the specified parameter.(验证指定的参数)
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 class NSAssertionHandler. When invoked, an assertion handler prints an error message that includes method and class names (or the function name). It then raises an NSInternalInconsistencyException exception.
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.
Assertions are disabled if the preprocessor macro NS_BLOCK_ASSERTIONS is defined. All assertion macros return void.
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.

英文不好,只能读懂个大概,就不翻译了。


       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值