19

我想创建一个包含可从所有项目访问的静态值的类。

伪代码:

class Constants:
  constant String API_URL : "http://api.service.com"
  constant Integer SOME_VALUE : 7

我该怎么做Objective-C

4

3 回答 3

16

您的问题的答案是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”,并且您无需在任何地方导入任何类,即您可以直接在项目的任何地方使用此变量。

于 2013-04-18T13:28:20.450 回答
13

你可以使用预处理器来做到这一点:

#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

于 2013-04-18T12:02:40.377 回答
1

您可以Singleton使用所有必要的常量创建一个这是一个示例

如果您不想创建类,则可以使用静态私有变量和静态 getter。

@interface

+(NSString*) getValue;

@end


@implementation

static NSString *_value = @"....";

+(NSString*) getValue {
   return _value;
}

@end
于 2013-04-18T11:58:46.687 回答