Я использую NSDictionary
, чтобы получить NSString
из списка со следующим кодом:
NSString *fullPath = [[NSBundle mainBundle] pathForResource:@"TestIds" ofType:@"plist"];
NSDictionary *dictionary = [[NSDictionary dictionaryWithContentsOfFile:fullPath] retain];
NSString *testid = [dictionary objectForKey:@"testId"];
и затем я сохраняю его в NSMutableArray
с объектами класса, который я создал:
// before the code above
NSMutableArray *array = [[NSMutableArray array] retain]; // this is actually a global variable
// after the code
IdDescription *idDesc = [[IdDescription alloc] initWithId:testid];
[array addObject:idDesc];
приложение выполняет некоторые вещи с другими вещами, а затем вызывает метод, который вызывает NSString
:
IdDescription *desc = [array objectAtIndex:n];
NSLog(@"%@", desc.testId); // testId is a property with retain
Проблема в том, что приложение аварийно завершает работу или прерывается, и все, что угодно, когда оно попадает в строку NSLog
. Самое редкое, что это работает, если я меняю строку:
NSString *testid = [dictionary objectForKey:@"testId"];
для:
NSString *testid = @"testId_1"; // or any other string
Я тестировал добавление:
if ([testid compare:@"testId_1"] == NSOrderedSame)
testid = @"testId_1";
после
NSString *testid = [dictionary objectForKey:@"testId"]
и все еще работает.
Я также пытался использовать
NSString *testid = [NSString stringWithFormat:@"testId_%d", 1]
вместо тревожной линии, но она вылетает с той же ошибкой EXC_BAD_ACCESS
.
Кто-нибудь знает, в чем может быть проблема? Я перепробовал почти все. Любая помощь наиболее ценится.