0

アプリ内のすべてのクラスで使用できるプロパティを格納するためのファイル Variables.m があります。ここで、クラス A のプロパティの 1 つ (ユーザー名など) に値を設定したいと思います。アプリ内の他のすべてのクラス (B、C、D、E..) で定数のように使用できるようにしたいと考えています。 . すなわち。クラス B で Variables オブジェクト (var など) を初期化したら、var.username を発行すると、クラス A で設定したユーザー名を取得する必要があります。

実際には、ユーザー名の値をハードコーディングする代わりに、プログラムで設定し、設定した値をすべてのクラスに表示させたいと考えています。クラスに移動するたびに変数オブジェクトを渡さずにこれを達成できますか?

4

3 に答える 3

2

または、使用することができますNSUserDefaults

クラス A に変数を設定します。

NSString *usernameToSave = @"John Doe";
[[NSUserDefaults standardUserDefaults] setObject:usernameToSave forKey:@"userName"];

任意のクラスで変数を読み取ります。

NSString *userName = [[NSUserDefaults standardUserDefaults] objectforKey:@"userName"];

単純であることは別として、これには、アプリの再起動後も永続的であるという利点があります (またはそうではありません)。

あまり安全ではないという欠点があります。パスワードなどについては、こちらで説明されているキーチェーン サービスを使用する必要があります。

于 2012-08-31T14:25:50.097 に答える
1

格納するアイテムに適したゲッターとセッターを持つシングルトン クラスを作成します。

その後、他のクラスからその単一のインスタンスを参照できます。

たとえば、Variables クラスで、次のようなクラス メソッドを作成します。

    +(Variables*)sharedVariables{
        static Variables *myVariables = nil;
        if (myVariables != nil){
             return myVariables;
        }
       myVariables = [[Variables alloc]init];
       return myVariables;
    }

より良い実装が必要な場合は、目的の C シングルトン クラスの実装を Google で検索してください。

:)

これを他のクラスから使用するには、次のように入力します。

[Variables sharedVariables].whatever
于 2012-08-31T14:17:07.410 に答える
0

シングルトンパターンを使用できます。このような。

@interface MySingleton : NSObject 
{
    NSString *username;
}
@property (nonatomic, retain) NSString *username;
+ (MySingleton *) sharedInstance;

@end


@implementation MySingleton
@synthesyse username;
static MySingleton *sMySingleton = nil;

+ (MySingleton *) sharedInstance
{
    @synchronized(self)
    {
        if (sMySingleton == nil)
        {
            sMySingleton = [NSAllocateObject([self class], 0, NULL) init];
        }
    }    
    return sMySingleton;
}

@end
于 2012-08-31T14:18:37.953 に答える