Java 및 C++ 개발 경험이 많아서 클래스 및 추상화 데이터가 꽤 쉽습니다. 저는 짧은 시간 전에 객관식 C를 시작했고, 저는 대부분 세계 전역에서 일하는 중이었고 모든 것이 순조롭게 진행되었습니다. 필자는 스파게티 코드를 줄이기 위해 코드의 상당 부분을 추출하기로 결정했으며, 토요일 이후로 극복하지 못했던 문제를 짚었습니다.Objective-C, 클래스 추상화 및 해당 변수 액세스
개요 :
내가 재생 카드 게임을하고있다. 나는 최근 카드 데이터를 3 개의 변수를 포함하는 클래스로 추상화했다. (정수) i_cardValue, (int) i_cardSuit 및 (UIImage *) uii_cardImage. 나는 또한 엔진 부품 (예 : 셔플 갑판 Managment를 같은 기본적으로 갑판 기능을) 추상화
-(PlayingCard *)initWithValue:(int)i_initValue suit:(int)i_initSuit image:(UIIMage*)uii_initImage {
[self setCardValue:i_initValue];
[self setCardSuit:i_initSuit];
[self setCardImage:i_initImage];
return self;
}
를 호출하여 카드를 만들 수 있습니다. 데크는 가변 배열이고 init 데크 기능을 가지고 있습니다.
NSMutableArray *nsma_deck;
-(void)initDeck {
nsma_deck = [[NSMutableArray alloc] initWithCapacity:52];
}
이제 내보기 컨트롤러에, 내가 initDeck로 전화를 걸, 그럼 내가 같은
[pce_Engine initDeck];
[[pce_Engine nsma_deck] addObject:[[PlayingCard alloc] initWithValue:13 suit:2 image:[UIImage imageNamed:@"2C.png"]]];
pce_Engine 유형의 PlayingCardEngine의 변수 인 선으로 갑판에 항목을 추가 할 수 있습니다. NSLog 줄을 initDeck에 넣었고 프로그램을 실행할 때 콘솔에 표시되지 않습니다. 그들은 호출되지 않습니다, 그래서 배열을 할당 점점, 그리고 그래서 내가 배열에 물건을 추가 할 수 없어? 나는이 모든 일을 잘했다고 생각했지만, 그것을 잘못했거나 무언가를 빠뜨린 것 중 하나는 뷰에 추가하는 것이 표시되지 않기 때문입니다. NSLog를 사용하여 갑판 == nil, 그래서 문제는 내가 갑판에 올바르게 액세스하지 못하고 값을 추가하지 않고 빈 변수 만 사방에 가지고 있다는 것입니다. (객관적인 C에 대한 많은 자습서를 보았습니다. 그러나 나는 심지어 내가 갈거야으로까지 추상화를 발견하지 않았습니다, 그래서 나는 내 문제를 찾을 수 없어.
이사람이 올바른 방향으로 날 포인트?
mg, pce_Engine을 잡아 주어서 고맙습니다. 초기화되지 않았습니다. 한 줄의 코드와 모든 것이 효과가 있다고 덧붙였습니다 (^. ^). 질문에 대답하기 위해 init_deck은 viewDidLoad 메서드에 있었고 새로운 엔진을 만들지 않았기 때문에 inits를 호출하지 못했습니다. – ColdLogic