У меня есть класс "CardSet", содержащий NSMutableArray * cardSet для хранения "карточек", которые я расширяю для создания "DeckCards". Я хотел бы, чтобы "CardSet" имел метод с именем "(void) addCard: (Card *)" (и аналогично метод "removeCard"). Я хотел бы добавить "addCard" для некоторых, как иметь доступ и установить cardSet. Еще лучше, я бы хотел использовать метод «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
Это компилируется просто отлично. Я хотел бы инициализировать экземпляр «DeckCards», используя его метод «addCard» 52 раза. Когда я вызываю addCard 52 раза в методе установки DeckCards и спрашиваю размер его "cardSet", мне возвращается 0.
Похоже, это проблема области действия или привилегий? Может ли метод addCard иметь какие-либо права доступа для установщика? Должен ли аргумент setter совпадать с возвращаемым и соответствующим типом члена?
[Я могу обойти вышесказанное, создав объект NSMutableArray "deck_cards_temp" вне "DeckCard", добавив к нему 52 карты и передав его для установки члена моего экземпляра "DeckCards" через установщик, унаследованный от "CardSet" ». Это не очень удовлетворительно!]
Что вы посоветуете? Заранее большое спасибо за вашу помощь и терпение.