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 、 Now in 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 に答える