OC中的宏定义

Posted Kingdev

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OC中的宏定义相关的知识,希望对你有一定的参考价值。

我们都知道,宏定义是编译期常量。而OC是一种动态语言。

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

1 __IPHONE_OS_VERSION_MAX_ALLOWED  // iOS系统版本最大允许
2 __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 用法:

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

崩溃日志:

1 2016-04-02 18:34:49.505 OC测试[22300:1679317] *** Assertion failure in -[ViewController viewDidLoad], /Users/liuxianzhi/Desktop/OC测试/OC测试/ViewController.m:31
2 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);
}

崩溃日志:

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

尊重作者劳动成果,转载请注明: 【kingdev】

以上是关于OC中的宏定义的主要内容,如果未能解决你的问题,请参考以下文章

Java学习笔记23---内部类之局部内部类只能访问final的局部变量

DialogFragment的使用与底层绘制

Android之三种Menu的使用与分析

ArcGIS Engine中的Symbols详解

Android-Service必须掌握的几点知识

JS浮点数的加减乘除运算