0

PlayingCardというクラスがあります。PlayingCardDeck というクラスで使用しようとしています。

PlayingCardDeck.h に PlayingCard.h をインポートしました

#import "PlayingCard.h"

@interface PlayingCardDeck : Deck

@end

PlayingCardDeck.m でクラス メソッドを呼び出そうとすると、青色で表示されません。XCode はクラスをオートコンプリートで認識しますが、選択しても青色ではありません。この例では、init メソッドを呼び出そうとしていますが、XCode が PlayingCard クラスが何であるかを認識していないかのように、予期される式のエラーが発生します。card.rank = と card.suit= の呼び出しのエラーも機能しません。これは、PlayingCard が認識されていないと思われるためです。クラスを定義して PlayCardDeck.h にインポートしたので、これは意味がありません。前もって感謝します。

#import <Foundation/Foundation.h>
#import "Deck.h"
#import "PlayingCard.h"

@interface PlayingCardDeck : Deck

@end


#import "PlayingCardDeck.h"

@implementation PlayingCardDeck

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

    if (self) {
        for(NSString *suit in [PlayingCard validSuits])
            for(NSUInteger rank =1; rank <= 10; rank++)
                PlayingCard *card = [[PlayingCard alloc] init];
                card.rank = rank;
        card.suit = suit;

    }
}

@終わり

@interface PlayingCard : Card

@property (strong, nonatomic) NSString* suit;
@property (nonatomic) NSUInteger rank;

+(NSArray *) validSuits;
//+(NSUInteger) maxRank;


@end
4

1 に答える 1

5

for ループと for ループがない{}、問題が発生します。

このコード

if (self) {
    for(NSString *suit in [PlayingCard validSuits])
        for(NSUInteger rank =1; rank <= 10; rank++)
            PlayingCard *card = [[PlayingCard alloc] init];
            card.rank = rank;
    card.suit = suit;

}

実はこういう意味

if (self) {
    for(NSString *suit in [PlayingCard validSuits]) {
        for(NSUInteger rank =1; rank <= 10; rank++) {
            PlayingCard *card = [[PlayingCard alloc] init]; 
        }
    }
    card.rank = rank;
    card.suit = suit;
}

card 変数が範囲外にあることがはっきりとわかります。


このように for ループのスコープを明示的に定義するために追加する必要が{あります}

if (self) {
    for(NSString *suit in [PlayingCard validSuits]) {
        for(NSUInteger rank =1; rank <= 10; rank++) {
            PlayingCard *card = [[PlayingCard alloc] init];
            card.rank = rank;
            card.suit = suit;
        }
    }
}
于 2013-06-18T15:06:37.730 に答える