您的位置:首页 > 其它

OC中的宏定义

2016-04-03 08:59 330 查看
我们都知道,宏定义是编译期常量。而OC是一种动态语言。

1.iOS系统版本判断的两个宏定义

__IPHONE_OS_VERSION_MAX_ALLOWED  // iOS系统版本最大允许
__IPHONE_OS_VERSION_MIN_REQUIRED // iOS系统版本最小需要


使用这俩宏,仅仅能消除编译器的警告而已。因为OC是动态语言,所以系统版本还需要判断。例如:



2.断言

/**
@brief 适用:Objective-C的方法
@param condition 条件.
@param desc      描述.
@return          若条件为NO,则工程崩溃且打印 desc.
*/
NSAssert(<#condition#>, <#desc, ...#>)

/**
适用:C的函数
*/
NSCAssert(<#condition#>, <#desc, ...#>)

/**
@brief 适用:Objective-C
@param condition 条件.
@return          若条件为NO,则工程崩溃.
*/
NSParameterAssert(<#condition#>)

/**
适用:C
*/
NSCParameterAssert(<#condition#>)


NSAssert 用法:

Man *man = nil;
NSAssert(man, @"man Can't be empty.");


崩溃日志:

2016-04-02 18:34:49.505 OC测试[22300:1679317] *** Assertion failure in -[ViewController viewDidLoad], /Users/liuxianzhi/Desktop/OC测试/OC测试/ViewController.m:31
2016-04-02 18:34:49.515 OC测试[22300:1679317] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'man Can't be empty.'


NSParameterAssert用法:

#pragma mark - View lifeCycle
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor orangeColor];

[self executeWithParam:nil];
}

- (void)executeWithParam:(NSString *)param {
// param存在,程序继续;反之崩溃!
NSParameterAssert(param);
}


崩溃日志:

2016-04-02 18:51:10.155 OC测试[22326:1713380] *** Assertion failure in -[ViewController executeWithParam:], /Users/liuxianzhi/Desktop/OC测试/OC测试/ViewController.m:34
2016-04-02 18:51:10.164 OC测试[22326:1713380] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: param'


尊重作者劳动成果,转载请注明: 【kingdev】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: