「カード」を保持するための NSMutableArray* cardSet を含む「CardSet」というクラスがあり、これを拡張して「DeckCards」を作成します。「CardSet」に「(void)addCard:(Card*)」というメソッド (および同様に「removeCard」メソッド) が必要です。カードセットにアクセスして設定する方法に「addCard」を追加したいと思います。さらに良いのは、「addCard」メソッドを使用して cardSet を初期化することです。クラスファイル「CardSet.h」は次のとおりです。
#import < Cocoa/Cocoa.h >
#import < Card.h >
@interface CardSet : NSObject {
NSMutableArray* cardSet;
}
-(id)init;
-(NSMutableArray*)getCardSet;
-(void)setCardSet:(NSMutableArray *)new_cardset;
-(Card*)getCard:(NSInteger) index;
**-(void)addCard:(Card*) new_card;**
-(void)removeCard:(Card*) old_card;
-(void)dealloc;
@property (readwrite, retain, getter=getCardSet, setter=setCardSet) NSMutableArray* cardSet;
@end
メソッドファイルには次のように書かれています。
#import "CardSet.h"
@implementation CardSet
-(id)init{
if( self = [super init] ){} //will add initialisations here later
return self;
}
-(NSMutableArray*)getCardSet{
return cardSet;
}
-(void)setCardSet:(NSMutableArray *)new_cardSet{
cardSet = new_cardSet;
}
-(Card*)getCard:(NSInteger)index{
return [cardSet objectAtIndex:index];
}
**-(void)addCard:(Card *)new_card{
[cardSet addObject:new_card];
}**
-(void)removeCard:(Card *)old_card{
[cardSet removeObject:old_card];
}
-(void)dealloc{
[cardSet release];
[super dealloc];
}
@synthesize cardSet;
@end
これは問題なくコンパイルされます。「addCard」メソッドを 52 回使用して「DeckCards」インスタンスを初期化したいと思います。DeckCards セッター メソッドで addCard を 52 回呼び出し、その「cardSet」のサイズを要求すると、0 が返されます。
これはスコープまたは特権の問題のように見えますか? 「addCard」メソッドにセッター権限を与えることはできますか? セッター引数は、戻り値およびそれぞれのメンバー型と同じでなければなりませんか?
[「DeckCard」の外側に NSMutableArray オブジェクト「deck_cards_temp」を作成し、これに 52 枚のカードを追加して、「CardSet」から継承されたセッターを介して「DeckCards」インスタンスのメンバーを設定するために渡すことで、上記の問題を回避できます。これはあまり満足のいくものではありません!]
何をアドバイスしますか?ご理解とご協力をよろしくお願いいたします。