0

Core Data を組み込んだゲーム プロジェクトに取り組んでおり、コードをできるだけモジュール化したいと考えています。

現在、コア データの「階層」チェーンは次のようになっています。

コア データ エンティティ -> SaveGame クラス -> GameLogic クラス -> レシーバー

SaveGame クラスは、managedObjectContext、さまざまなエンティティ、保存および上書き操作など、コア データに関連するすべてを処理します。

GameLogic クラスは、ゲームの仕組みを処理し、コア データから渡されたデータを使用して、収入の計算、現在の金額の計算、レベル変更の処理などのいくつかのことを行います。

私はこのセットアップに満足していません.次のように、何もありません。

+(NSArray *)passCoreDataInfo
{
return [CoreDataEntity fetchCoreDataEntityInfo] // ExecuteFetchRequest
}

これは、階層の下位のクラスで次のように使用されます。

+(NSArray *)passCoreDataInfoAgain
{
return [HigherClass passCoreDataInfo]
}

チェーンのどこかで私のレシーバーが何か役に立つまで:

(...)
NSArray *coreDataInfo = [SomeClass passCoreDataInfoYetAgain];
(...)

これはおそらく多くのメモリと処理能力を浪費しますが、恐ろしい「全員が全員と話す」モデルに屈したくありません。

y 階層をより適切に設定し、同じデータの受け渡しを回避する方法についてのヒントを教えてください。

4

2 に答える 2

0

[CCDirector sharedDirector][CCSpriteFrameCache sharedSpriteFrameCache][CCTextureCache sharedTextureCache]などの共有インスタンスを作成しないのはなぜ[SimpleAudioEngine sharedEngine]ですか?

名前を付けるだけ[CoreDataEntity sharedEntity]です。

static CoreDataEntity *instanceOfCoreDataEntity = nil;

@implementation CoreDataEntity

+ (CoreDataEntity *)sharedEntity {
    if (!instanceOfCoreDataEntity) {
        instanceOfCoreDataEntity = [[CoreDataEntity alloc] initWithSomething:@"something"];
    }
    return instanceOfCoreDataEntity;
}

....

その後、どこでも使用できます。

NSArray *coreDataInfo = [[CoreDataEntity sharedEntity] passCoreDataInfo];
于 2012-08-13T14:17:18.490 に答える
0

CoreDataEntities から送信された (一般的な) メッセージを受信者がサブスクライブできないようにするのはなぜですか? 「誰もが誰とでも話す」モデルではなく、「誰もが興味のある人のつぶやきをフォローできる」モデルです。

于 2012-08-12T13:08:40.323 に答える