我有一个名为“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
这编译得很好。我想使用它的“addCard”方法初始化一个“DeckCards”实例 52 次。当我在 DeckCards setter 方法中调用 addCard 52 次并询问其“cardSet”的大小时,我返回 0。
这似乎是范围或权限问题?“addCard”方法可以有任何setter权限吗?setter 参数必须与返回值和相应的成员类型相同吗?
[我可以通过在“DeckCard”之外创建一个 NSMutableArray 对象“deck_cards_temp”来解决上述问题,向其中添加 52 张卡片,然后通过从“CardSet”继承的设置器将其传递给我的“DeckCards”实例的成员。这不是很满意!]
你有什么建议?非常感谢您的帮助和耐心。