У меня странная проблема со значениями переменных. Это код (это часть метода класса):
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. Атрибут cards
appData - это NSArray
, и он явно не содержит более десяти миллионов элементов, поэтому я получаю ошибку выхода за границы. Я пробовал кастовать с (int)cardIndex
без лучшего результата. Странно то, что похожий код в каком-то другом классе работает нормально.
Это некоторые данные, которые я хочу использовать в своем приложении, поэтому у меня есть класс Model, который инициализируется в AppDelegate как theData
, а затем принимается различными ViewControllers. Эта ошибка появляется после одного успешного доступа к другому ViewController (который также сохраняет / освобождает).
Любая помощь будет оценена.