1

配列などの特定のデータをNSUserDefaultsに保存する必要があるとしましょう。

アプリのさまざまな場所からそのデータにアクセスする必要がある場合、ViewControllerからViewControllerにデータを渡すか、必要になるたびにNSUserDefaultsからデータを引き出す方が効率的ですか?

保存する必要があることを忘れないでください。データの保存に伴うオーバーヘッドを割り引いてください。基本的に、ivarの作成と設定、またはNSUserDefaultsからのデータのロードにオーバーヘッドがありますか?

4

2 に答える 2

5

私は常に、この種の情報を保持するためにアプリのどこからでもアクセスできるシングルトンオブジェクトを作成することを好みます。たとえば、というクラスを作成するとしDataStoreます。sharedDataStore次のようなクラスメソッドを作成します。

@implementation DataStore

static DataStore *sharedGameStore_ = nil;

+ (DataStore *)sharedDataStore {
    if (sharedDataStore_ != nil) return sharedDataStore_;
    static dispatch_once_t pred;        
    dispatch_once(&pred, ^{             
        sharedDataStore_ = [[DataStore alloc] init];
    });
    return sharedDataStore_;
}

initデータストアクラスのメソッドで、すべてのセットアップを行い、 NSUserDefaultswhat-have-youを読み取ります。次に、使用する必要のあるデータの読み取り/書き込み用のプロパティやメソッドを追加します。これにより、複数の読み取りに対してデータが適切にキャッシュされるようにすることができます。

次に、アプリのどこからでも.hファイルを含めて呼び出すことができます。

[DataStore sharedDataStore] someMethodName]

また、アプリはオブジェクトのインスタンスを1つしか作成しないため、データを一元的かつ効率的に読み書きしていることを確認してください。

于 2013-01-16T03:43:23.460 に答える
0

私は常に、この種の情報を保持するためにアプリのどこからでもアクセスできるシングルトンオブジェクトを作成することを好みます。

このアプリ内購入チュートリアルの例はRageIAPHelperだと思います。

于 2013-01-16T04:02:49.297 に答える