在IOS项目中使用常量
2012-04-25 10:32
363 查看
objc不像java,有静态常量。比如:
public static final RADIAS=180;
目前我的做法是,使用c的预处理#define。比如,在头文件中:
#define MIN_VELOCITY 10
#define LOOP_COUNT 100
@interface AnimationView : UIView <UIGestureRecognizerDelegate>{
在代码中使用:
if (data.panLocation.x<MIN_X) {
data.panLocation.x=MIN_X;
}
这些预定义常量,会在编译器编译的时候用define中定义的字符串替代。
——————————————————————————————————————————————————————————
之前,在在objc项目中使用常量中,使用c的预处理#define来设置常量。比如,可以做个头文件,然后在需要的类文件中import,使用常量。
但这不是最佳实践。这样做可能是最好的方式,首先在比如叫Constants.h的头文件中:
#import <Foundation/Foundation.h>
extern NSString * const kInitURL;
@interface Constants : NSObject {
}
@end
这里使用到extern c关键字,表示这个变量已经声明,只是引用。const关键字表示变量是常量,不可修改。
在objc的约定里,常量也是大小写混排的驼峰命名规则,首字母小写,另外,第一个字母是k。
然后,在Constants.m文件中:
#import "Constants.h"
NSString * const kInitURL = @"http://marshal.easymorse.com";
@implementation Constants
@end
在这里给常量kInitURL赋值。
如何使用常量?只需在所需的m文件引入Constants头文件,下面是使用示例:
#import "BasicDemosViewController.h"
#import "Constants.h"
@implementation BasicDemosViewController
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
NSLog(@"load view: %@",kInitURL);
}
使用这种方式,比通过宏预定义的优点是,可以对常量进行指针比较操作,这是#define做不到的。即:
[myURL isEqualToString:kInitURL];
————————————————————————————————————————————————
在在objc项目中使用常量的最佳实践中的常量,是指可用于全局的常量。如果只是在文件内部使用,不希望之外的地方能访问到,就需要:
#import "BasicDemosViewController.h"
#import "Constants.h"
NSString * const kMyURL=@"http://marshal.easymorse.com";
@implementation BasicDemosViewController
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
NSLog(@"load view: %@, %@",kInitURL,kMyURL);
}
public static final RADIAS=180;
目前我的做法是,使用c的预处理#define。比如,在头文件中:
#define MIN_VELOCITY 10
#define LOOP_COUNT 100
@interface AnimationView : UIView <UIGestureRecognizerDelegate>{
在代码中使用:
if (data.panLocation.x<MIN_X) {
data.panLocation.x=MIN_X;
}
这些预定义常量,会在编译器编译的时候用define中定义的字符串替代。
——————————————————————————————————————————————————————————
在objc项目中使用常量的最佳实践
之前,在在objc项目中使用常量中,使用c的预处理#define来设置常量。比如,可以做个头文件,然后在需要的类文件中import,使用常量。但这不是最佳实践。这样做可能是最好的方式,首先在比如叫Constants.h的头文件中:
#import <Foundation/Foundation.h>
extern NSString * const kInitURL;
@interface Constants : NSObject {
}
@end
这里使用到extern c关键字,表示这个变量已经声明,只是引用。const关键字表示变量是常量,不可修改。
在objc的约定里,常量也是大小写混排的驼峰命名规则,首字母小写,另外,第一个字母是k。
然后,在Constants.m文件中:
#import "Constants.h"
NSString * const kInitURL = @"http://marshal.easymorse.com";
@implementation Constants
@end
在这里给常量kInitURL赋值。
如何使用常量?只需在所需的m文件引入Constants头文件,下面是使用示例:
#import "BasicDemosViewController.h"
#import "Constants.h"
@implementation BasicDemosViewController
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
NSLog(@"load view: %@",kInitURL);
}
使用这种方式,比通过宏预定义的优点是,可以对常量进行指针比较操作,这是#define做不到的。即:
[myURL isEqualToString:kInitURL];
————————————————————————————————————————————————
objc文件内部的常量
在在objc项目中使用常量的最佳实践中的常量,是指可用于全局的常量。如果只是在文件内部使用,不希望之外的地方能访问到,就需要:#import "BasicDemosViewController.h"
#import "Constants.h"
NSString * const kMyURL=@"http://marshal.easymorse.com";
@implementation BasicDemosViewController
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
NSLog(@"load view: %@, %@",kInitURL,kMyURL);
}
相关文章推荐
- 在IOS项目中使用常量
- 正确使用iOS常量(const)、enum以及宏(#define)在iOS开发中请尽量多使用const、enum来代替宏定义(#define);随着项目工程的逐渐增大,过多的宏定义还可能影响项目的编译
- iOS 宏(define)与常量(const)的正确使用
- iOS项目开发实战——使用三种方式实现页面跳转与参数传递(三)
- iOS项目开发实战——学会使用TableView列表控件(三)了解Section
- iOS 宏(define)与常量(const)的正确使用
- iOS 使用const定义项目全局变量
- 检查iOS项目中是否使用了IDFA
- git 常用命令 使用及iOS开发使用git管理项目步骤
- Android iOS项目,修改版本号脚本及结合IDE的使用
- IOS是否在项目中存在,所使用的反射那点事
- IOS项目中使用CocoaPods管理依赖库
- iOS项目开发实战——使用代码获取屏幕宽高
- iOS:使用Github托管自己本地的项目代码方式一:(Xcode方式:开发工具Xcode配置Git,由Xcode-->Source Control-->Commit)
- iOS———使用github管理iOS分布式项目开发
- iOS-SQLite在项目中实际使用(Swift3)
- ios项目中安装和使用CocoaPods
- 正确使用iOS常量(const)、enum以及宏(#define)
- IOS ARC项目使用非ARC文件
- IOS中常用校验(项目中使用)