Nemozar
@Nemozar
Php developer

Objective-c deallocated при открытии новой формы?

Добрый день.

Возникает ошибка с памятью при выполнении приложения.

[5133:307051] *** -[DeclarantController retain]: message sent to deallocated instance 0x7f9e53d22b50

Форму открываю после запроса данных в фоновом потоке.

dispatch_async(dispatch_get_main_queue(), ^{
                        DeclarantController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"DeclarantController"];
                        viewController.consultData = self.consultData;
                        viewController.parentView = self;
                        [self.navigationController pushViewController:viewController animated:YES];
                    });


Упростил контроллер, но ошибка выскакивает если в viewDidLoad поставить вызов метода getDeclarantKind. Если закомментировать, то ошибки не возникает. Ошибка возникает даже с пустым методом.

@implementation DeclarantController : BaseController

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self tableColor];
    [self getDeclarantKind];
}

-(NSMutableArray*)getDeclarantKind
{

}
@end


Если просто идти по формочкам приложения то ошибок нет. Ошибка возникает при следующем алгоритме:

1. Открывается форма А на ней есть кнопка с переходом на форму Б
2. Открывается форма Б на ней запрос API с сайта в фоновом процессе. Если ответ пришел, открывается форма С
3. Форма Ц нормально работает
4. Переходим назад свайпом на форму Б и затем свайпом на форму А
5. Повторяем пункты 1-3. Форма открывается
6. Переходим назад свайпом на форму Б и затем свайпом на форму А
7. Повторяем пункты 1-3. Форма Ц открывается но кнопки сползают. После нажатия на любую область экрана вылетает ошибка в main.m

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}


Thread 1: EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0)

Самое непонятное почему ошибка срабатывает только на 3 проход. Первые 2 работают. И если удалить [self getDeclarantKind]; то тоже форма отрисовывается и работает нормально.
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы