#exc-bad-access
#исключение из-за неправильного доступа
Вопрос:
Меня немного смущает следующий код. Я был хорошим солдатом и расставлял точки над i и пересекал точки над t, освобождая объект tmp в следующем фрагменте. Однако во время выполнения я получаю «EXC_BAD_ACCESS»
-(void) aMethod {
.
.
if (testMode) {
MyClass *tmp = [[MyClass alloc] init];
[tmp aMethodInTheClass];
[tmp release];
}
.
.
}
Если я удалю инструкцию [tmp release], ошибка не будет сгенерирована.
Является ли освобождение ненужным, потому что область действия объекта ‘tmp’ прекращается после внутреннего условия if?
Спасибо.
Комментарии:
1. Похоже, вашему приложению нужен указатель на него! Определите эту переменную в .h, создайте ее в методе ur и освободите ее внутри метода освобождения приложения
2. Но я не хотел вводить переменную экземпляра для этой временной переменной.
3. Проверьте мой ответ, который может сработать!
Ответ №1:
Попробуйте это,
-(void) aMethod {
.
.
if (testMode) {
MyClass *tmp = [[MyClass alloc] autorelease];
[tmp aMethodInTheClass];
}
.
.
}
Удачи!