변수 값에 이상한 문제가 있습니다.iphone nslog 데이터가 손상되었습니다
MyAppDelegate *pDelegate = [[UIApplication sharedApplication] delegate];
SomeDictionaryData *appData = [pDelegate.theData retain];
NSLog(@"my instance var: %@",cardIndex); // outputs "my instance var: 4"
NSDictionary *currentCard = [[NSDictionary alloc] initWithDictionary:[appData.cards objectAtIndex:cardIndex]];;
// the above line breaks the app
[currentCard release];
[appData release];
나는 objc_exception_throw
중단 점에 디버거를 사용하고 있습니다 : 이것은 코드입니다 (이것은 클래스 메소드의 일부입니다). objectAtIndex
에 수신 된 입력 값은 13760640으로 표시됩니다. appData의 cards
속성은 NSArray
이며 분명히 천만 개 + 항목이 없으므로 범위를 벗어납니다. 나는 더 나은 결과와 함께 (int)cardIndex
로 캐스팅을 시도했다. 이상한 것은 다른 클래스에서 비슷한 코드가 잘 동작한다는 것입니다.
이것은 내 응용 프로그램에서 사용하려는 일부 데이터이므로 AppDelegate에서 으로 초기화 된 Model 클래스가 있고 다른 ViewControllers에 의해 액세스됩니다. 이 오류는 다른 ViewController에서 성공적으로 액세스 한 후에 나타납니다 (그 중 하나는 유지/해제됩니다).
도움이 될 것입니다.
감사합니다. "잘못된 수신기 유형 int"경고가 표시됩니다. – mga
(NSUInteger)로 캐스팅을 시도했지만 여전히 경고가 표시됩니다. 그래도 다른 모든 것은 잘 작동합니다 ... 나는 단지 경고를 좋아하지 않습니다. – mga
바로 켜기! NSNumber에 필요한 모든 참조를 변환했습니다. 감사! – mga