2012-09-09 5 views
-1

내 프로젝트 검사기 터키어 게임을왜 회전 된 '?'

을 만드는 것입니다 그리고 난

#import "Cell.h" 

@implementation Cell 
-(void)Cell{ 
    checker=' '; 
    number=1; 
} 
@end 

Cell.m

#import <Foundation/Foundation.h> 

@interface Cell : NSObject 

{ 
    int number; 
    char checker; 
} 
@property (nonatomic) int number; 
@property (nonatomic) char checker; 
@end 

과에 Cell.h

을 보드 2 개 클래스를 만들어 휴대

하지만, 내가 여러 가지 방법을 시도했지만 성공하지 못했습니다 여기 내 검사기를 인쇄하는 코드입니다

,
DrawCell[ 3 ].checker = 'X'; 

그 결과는도 회전 물음표 그들 모두 0 인 숫자이며, 내가 그들을 변경하려고하지만 그들은 Cell 당신을 제안하는 방법을 나타내는 0

감사

+0

는 아마 옆에 물음표가 필요가 없다 잘못된 문자 코드를 생성했거나 잘못된 문자 집합 번역을 정의했기 때문에 "인쇄 할 수없는"문자가 있습니다. –

+0

그러나 DrawCell이 정의 된 방법이나 내용으로 무엇을하는지에 대해서는 알려주지 않습니다. (DrawCell이 Cell의 인스턴스에 대한 포인터라고 가정 할 수 있지만, 표준 Objective-C 규칙에 따라 변수는 소문자로 시작해야하고 클래스는 대문자로 시작해야하기 때문에 그렇지 않습니다.) –

답변

1

구현을 스텔라 C++에서 생성자가 클래스의 이름을 따서 명명 된 것일 수 있습니다. Objective-C는 이것을 다르게 수행합니다. 당신의 @interface 일치하는 구현은 다음과 같습니다 당신이 같은 정적 배열 DrawCellCell *의 뭔가 선언하는 것 같은

@implementation Cell 

@synthesize number, checker; // implement the properties, not required in Xcode 4.4 

- (id) init // the constructor 
{ 
    self = [super init]; // must invoke superclass init 
    if(self != nil)  // check a valid object reference was returned 
    { 
     checker = ' '; 
     number = 1; 
    } 
    return self;   // return the initialized object 
} 

@end 

지금 보이는 :이 배열의 세포를 할당해야

Cell *DrawCell[9]; 

을하는 루프는 할 수 있습니다 :

이제
for(unsigned ix = 0; ix < 9; ix++) 
    DrawCell = [[Cell alloc] init]; // allocate & init each Cell 

당신의 라인 :

DrawCell[3].checker = 'X'; 

은 정상적으로 작동합니다.

C 스타일 배열보다는 NSArray을 사용하는 것이 좋을지 모르지만, 작은 고정 크기 배열의 경우에는 괜찮습니다.

다른 사람들은 두 개의 단순한 데이터 조각 만 저장하는 것으로 보이는 것처럼 개체를 신경 쓸 필요가 없다고 제안 할 수도 있습니다. 이 경우 구조를 사용하는 것이 좋은 선택 일 수 있습니다. 사용

typedef struct 
{ 
    int number; 
    char checker; 
} Cell; 

Cell DrawCell[9]; 

하고 라인을

DrawCell[3].checker = 'X'; 

또한 작품과 동적 메모리 할당, 재산 합성 등

HTH가

관련 문제