-1

警告: 私は IOS の Itunes スタンフォード コースを受講しており、この言語の初心者です。

「Deck.m」ファイルにこの関数があります。

- (id)init {
 self = [super init];

 if (self) {
     for (NSString *suit in [Card validSuits]) {
         for (NSUInteger rank = 0; rank < [[Card validRanks] count]; rank++) {
             Card *card = [[Card alloc] init];
             card.contents = [[[Card validRanks] objectAtIndex:rank] stringByAppendingString:suit];
             [self.cards addObject:card];
             NSLog(@"%@", [self.cards count]);
         }
     }
 }

 return self;
}

「Card.h」ファイルにもこの関数があります(デッキはで構成されています)

@interface Deck : NSObject

@property (nonatomic, strong) NSMutableArray *cards;

- (Card *)drawRandomCard;

@end

私が抱えている問題は、プログラムの実行中にカウントを印刷すると、常に 0 になることです。カードを印刷しようとすると、問題なく表示されます。配列にインデックスを付けてカードを印刷しようとすると、すべて (null) になります。

どうしたの?

4

2 に答える 2

4

self.cardsを初期化する必要があります。それ以外の場合は、-[nil addObject:].

于 2013-06-05T03:39:44.913 に答える
1

配列を初期化したとは思わない:

内部で init 初期化します:

cards=[[NSMutableArray alloc]init];
于 2013-06-05T03:41:45.670 に答える