NSParameterAssert

断言评估条件,如果条件求值为false,则调用当前线程的断言处理程序,并向其传递格式字符串和可变数量的参数。 每个线程都有自己的断言处理程序,它是NSAssertionHandler类的对象。 调用时,断言处理程序会输出包含方法和类名(或函数名)的错误消息。 然后它引发一个NSInternalInconsistencyException异常。
此宏验证Objective-C方法的参数。 只需提供参数作为条件参数。 宏评估参数,如果为false,则记录包含参数的错误消息,然后引发异常。
如果定义了预处理器宏NS_BLOCK_ASSERTIONS,则禁用断言。 所有断言宏都返回void。

- (void)handleRequest:(SJRouteRequest *)request completionHandler:(nullable SJCompletionHandler)completionHandler {
    NSParameterAssert(request);
// 放在debug模式下,如果request不存在直接闪退,
    if ( !request ) return;
    Class handler = _handlersM[request.requestPath];
    if ( handler ) {
        [handler handleRequestWithParameters:request.prts topViewController:_sj_get_top_view_controller() completionHandler:completionHandler];
    }
    else {
        printf("\n (-_-) Unhandled request: %s", request.description.UTF8String);
        if ( _unhandledCallback ) _unhandledCallback(request, _sj_get_top_view_controller());
    }
}
NSString *result=@"中山郎";
NSInteger  count=10;
NSAssert(count>10, @"总数必须大于10");
NSLog(@"断言执行之后");
NSParameterAssert(nil);
NSParameterAssert(![result isEqualToString:@"FlyElephant"]);
NSLog(@"Name:%@",result);
NSParameterAssert([result isEqualToString:@"FlyElephant"]);

你可能感兴趣的:(NSParameterAssert)