MapController Alloc Init и ViewController alloc init В результате получается цикл - PullRequest
0 голосов
/ 19 декабря 2018

У меня очень длинный view controller.m, который я пытаюсь разделить на отдельные файлы, чтобы сохранить его организованность.Я знаю, что могу создавать отдельные файлы .m .h и разделять их, но при этом я попадаю в циклы (что я понимаю, поскольку MapController.m снова инициализирует viewcontroller, вызывая запуск и повторение viewDidLoad.

У меня есть карта, которую я хочу создать в моем MapController.m

-(void)setMapSettings{
    NSLog(@"test");
    viewController = [[ViewController alloc] init];
    SKMapView *mapView = [[SKMapView alloc] initWithFrame:CGRectMake( 0.0f, 0.0f,  CGRectGetWidth(viewController.view.frame), CGRectGetHeight(viewController.view.frame) )];

}

Я хочу добавить выше SKMapView к UIView, называемому mapViewContainer в моем viewController.h

ViewController.m:

- (void)viewDidLoad {
    mapsViewController = [[MapController alloc] init];
    [mapsViewController setMapSettings];
}

Выполнение этого создает цикл, приводящий к сбою. Я знаю, что ответ, вероятно, очень прост, и я просто глуп, но яЯ потратил часы на поиск решения, и я не могу понять его. Любая идея состоит в том, как я полагаю, что смогу сделать вышеупомянутое без зацикливания и без инициализации представлений карты, я требую все в ViewController.m?

1 Ответ

0 голосов
/ 19 декабря 2018

Вы говорите, что разделяете контроллер представления, извлекая из него код, но, насколько я понимаю, это привело к созданию второго контроллера представления (либо this, либо «MapController» - неправильное наименование).

В любом случае, как вы уже упоминали, сбой определенно вызван этим циклом alloc / init: вы должны реинжинировать свой код, чтобы только один из двух объектов создавал экземпляр другого.

(пожалуйста, имейте в видуимейте в виду, что если вы делаете это для доступа к одному объекту из другого, вы делаете это неправильно: alloc / init создает новый экземпляр этого класса каждый раз, когда он вызывается, он не дает вамуказатель на существующий)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...