我想创建一个包含可从所有项目访问的静态值的类。
伪代码:
class Constants:
constant String API_URL : "http://api.service.com"
constant Integer SOME_VALUE : 7
我该怎么做Objective-C
?
我想创建一个包含可从所有项目访问的静态值的类。
伪代码:
class Constants:
constant String API_URL : "http://api.service.com"
constant Integer SOME_VALUE : 7
我该怎么做Objective-C
?
您的问题的答案是extern keyword 。我会用一个例子向你解释。在您的项目中添加目标 c 类并将它们命名为 Common ,现在在 Common.h
@interface Common : NSObject
extern NSString *SiteApiURL;
@end
使用 extern 关键字定义 NSString 类的实例后,您需要切换到 Common.m 类并初始化 NSString (SiteApiURL) 的值
#import "Common.h"
@implementation Common
NSString *SiteApiURL = @"http://api.service.com";
@end
像这样在 project-Prefix.pch 文件中导入 Common.h 类
#import <Availability.h>
#ifndef __IPHONE_3_0
#warning "This project uses features only available in iOS SDK 3.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import "Common.h"
#endif
全部完成,现在您可以在整个项目的任何地方使用对象“SiteApiURL”,并且您无需在任何地方导入任何类,即您可以直接在项目的任何地方使用此变量。
你可以使用预处理器来做到这一点:
#define API_URL @"http://api.service.com"
#define SOME_VALUE (7)
访问定义很简单:[object do:API_URL];
或者你可以使用常量
NSString * const apiURL = @"http://api.service.com";
NSNumber * const someValue = @7;
访问 const 就像访问变量一样,所以字符串只是一个简单的调用。NSNumber 是原语的对象包装器,因此您需要像这样访问它:someValue.intValue
您可以Singleton
使用所有必要的常量创建一个这是一个示例
如果您不想创建类,则可以使用静态私有变量和静态 getter。
@interface
+(NSString*) getValue;
@end
@implementation
static NSString *_value = @"....";
+(NSString*) getValue {
return _value;
}
@end