2013-06-18 4 views
0

나는 PlayingCard라는 클래스를 가지고 있습니다. PlayingCardDeck이라는 클래스에서이 클래스를 사용하려고합니다.Xcode에서 클래스가 파란색으로 나타나지 않는 이유는 무엇입니까?

나는 그것이 파란색으로 표시되지 않습니다 PlayingCardDeck.m의 클래스 메서드를 호출 할 때 나는

#import "PlayingCard.h" 

@interface PlayingCardDeck : Deck 

@end 

PlayingCardDeck.h

에 PlayingCard.h을 가져 왔습니다. XCode는 클래스를 자동 완성으로 보지만 선택되면 파란색으로 표시되지 않습니다. 이 예제에서는 init 메서드를 호출하려고합니다. 그러나 XCode에서 PlayingCard 클래스가 무엇인지 알지 못하는 것처럼 오류가 발생합니다. PlayingCard가 인식되지 않아서 card.rank = 및 card.suit =에 대한 호출의 오류가 작동하지 않습니다. 이 클래스를 정의하고 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; 

    } 
} 

@end

@interface PlayingCard : Card 

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

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


@end 
+0

클래스 메소드와 같은 루프의 범위를 정의하기 위해? 속성을'합성 \'했습니까? 런타임에 오류가 발생합니까 아니면 컴파일러 오류가 발생합니까? – FeifanZ

답변

5

루프에 대한 사람들의 {} 귀하의 부족은 당신에게 문제를 제공합니다.

이 코드

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; 
} 

는 이제 카드 변수가 범위를 벗어나 있음을 분명히 알 수 있습니다 의미한다.


당신은 { 추가해야하고 }은 명시 적으로`PlayingCardDeck`에 호출이

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; 
     } 
    } 
} 
+0

그랬어! 통찰력에 감사드립니다. – user2497644

관련 문제