私は Java および C++ 開発の経験が豊富であるため、クラスとデータの抽象化は私にとって非常に簡単です。私は少し前にオブジェクティブ C を始めたばかりで、ほとんどがクラス内のグローバルで作業しており、すべてが順調に進んでいました。スパゲッティコードを少なくするために、コードの大部分を抽象化することにしましたが、土曜日以来克服できなかった問題にぶつかりました。
概要:
トランプゲームを作っています。最近、カード データを 3 つの変数を含むクラスに抽象化しました。(int)i_cardValue、(int)i_cardSuit、および (UIImage *)uii_cardImage。呼び出してカードを作成します
-(PlayingCard *)initWithValue:(int)i_initValue suit:(int)i_initSuit image:(UIIMage*)uii_initImage {
[self setCardValue:i_initValue];
[self setCardSuit:i_initSuit];
[self setCardImage:i_initImage];
return self;
}
また、エンジン部分 (基本的にシャッフルやデッキ管理などのデッキ機能) も抽象化しました。デッキは変更可能な配列であり、デッキの初期化関数があります。
NSMutableArray *nsma_deck;
-(void)initDeck {
nsma_deck = [[NSMutableArray alloc] initWithCapacity:52];
}
ここで、ビュー コントローラーで initDeck を呼び出し、次のような行で項目をデッキに追加します。
[pce_Engine initDeck];
[[pce_Engine nsma_deck] addObject:[[PlayingCard alloc] initWithValue:13 suit:2 image:[UIImage imageNamed:@"2C.png"]]];
pce_Engine は PlayingCardEngine 型の変数です。NSLog 行を initDeck に入れましたが、プログラムを実行してもコンソールに表示されません。それらが呼び出されていないため、配列が割り当てられていないため、配列に要素を追加できませんか? 私はこれで問題ないと思っていましたが、ビューに追加しても表示されないため、間違っているか、何かが欠けています。NSLogを使用すると、デッキ== nilなので、問題はデッキに正しくアクセスしていないため、値を追加せず、どこにでも空の変数しかないことだと思います:(。目的cのチュートリアルをたくさん見てみました。しかし、私が行っている限り抽象化するものさえ見つけていないので、私の問題を見つけることができませんでした。
誰かが私を正しい方向に向けることができますか?