您的位置:首页 > 移动开发 > IOS开发

iOS定义常量的最佳实践

2015-10-23 22:25 459 查看
      我之前写过一篇博客《iOS项目中全局变量的定义与使用》,讲的是怎么在iOS项目中定义全局变量。而全局变量和常量是项目中最常用到的两种类型的变量。对于有代码洁癖的程序猿来说,一般是不允许在编码中直接出现数字、字符串的。这篇博客我们来谈谈在iOS中声明常量。并从最一般的声明方法,最后推到最佳实践。

【实践1】:直接在类中声明const常量

- (void)viewDidLoad {
[super viewDidLoad];

NSString* const initString = @"myName";
NSLog(@"%@",initString);

}


如果我想再次对这个常量进行赋值,会出现如下错误提示:只读变量不能被赋值,这表示我们声明的的确是一个常量。




问题:在viewDidLoad()方法中声明了一个常量,那就只能在这个方法中使用这个常量了。。。是不是很悲剧。

【实践2】:在某个类中声明一个全局的const常量

#import "ViewController.h"

NSString* const initString = @"myName";

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];

NSLog(@"%@",initString);

}

@end


在一个类的实现文件中定义一个const常量,那么这个常量就可以在这个类中都可以用。不再局限于一个方法了。

【实践3】类中使用#define定义常量

#import "ViewController.h"

# define ALL_NAME @"chenyufeng"
# define ALL_AGE 23

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];

NSLog(@"%@",ALL_NAME);
NSLog(@"%d",ALL_AGE);

}

@end


在使用#define宏定义的时候,在程序中会进行完全的文本替换。个人并不是特别常用#define。

【最佳实践】新建类存放所有的常量

(1)新建Constant类,在Constant.h中实现如下:

#import <Foundation/Foundation.h>

extern NSString* const url;

#define URL @"http://www.baidu.com"

@interface Constant : NSObject

@end


(2)在Constant.m中实现如下:

#import "Constant.h"

NSString* const url = @"http://www.google.com";

@implementation Constant

@end


(3)主文件中实现如下:

#import "ViewController.h"
#import "Constant.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];

NSLog(@"%@",url);

NSLog(@"%@",URL);

}

@end


(4)输出结果如下:




这个我觉得是声明一个常量的最佳实现,也可以符合实际项目的需要。注意的是:在需要使用到定义的常量时,需要导入常量类的头文件。

github主页:https://github.com/chenyufeng1991  。欢迎大家访问!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: