Я действительно борюсь с этим базовым программированием для iOS, но я просто не могу понять, что происходит и как это решить.
У меня есть основной контроллер входа в систему, который определяет, когда пользователь вошел в систему, и представляет следующий контроллер, если аутентификация прошла успешно:
@interface LoginViewController (){
//Main root instance
RootViewController *mainPlatformRootControler;
}
-(void)loggedInActionWithToken:(NSString *)token anonymous:(BOOL)isAnon{
NSLog(@"User loged in.");
mainPlatformRootControler = [self.storyboard instantiateViewControllerWithIdentifier:@"rootViewCOntrollerStoryIdentifier"];
[self presentViewController:mainPlatformRootControler animated:YES completion:^{
}];
}
И это хорошо работает, без проблем.
Моя проблема связана с выходом из системы. Как полностью удалить экземпляр RootViewController и показать новый?
Я вижу, что экземпляры RootViewController складываются, потому что у меня есть несколько наблюдателей, и после выхода из системы, а затем входа в систему они вызываются несколько раз (столько раз, сколько я выхожу и снова вхожу).
Я попробовал следующее безуспешно:
Сначала обнаружение выхода из системы в RootViewController и отклонение:
[self dismissViewControllerAnimated:YES completion:^{
[[NSNotificationCenter defaultCenter] postNotificationName:@"shouldLogOut" object:nil];
}];
А затем в LoginViewController:
-(void)shouldLogOut:(NSNotification *) not{
NSLog(@"No user signed in");
mainPlatformRootControler = NULL;
mainPlatformRootControler = nil;
}
Так, как я могу справиться с этим? Я знаю, что это базовая работа с памятью, но я просто не знаю, как?