У меня есть аргумент с моим членом команды относительно popToViewController.Правильный способ вызова popToViewController - iOS
Для меня лучший подход Can i pop to Specific ViewController?
Но он думает, что мы должны создать статический экземпляр ViewController, а затем вызвать
-(void)takeToPreviousViewController {
if([IVPreviousViewController sharedInstance]) {
[self.navigationController popToViewController:[IVPreviousViewController sharedInstance] animated:YES];
}
}
Я сильно соединять этот подход, поскольку мы создаем открытый метод в IVPreviousViewController, который не имеет отношения к currentViewController. Мы всегда должны избегать метода, как показано на рисунке.
Может ли кто-нибудь указать мне надежную причину наилучшего подхода.
Update:
IVPreviousViewController.h
__weak static IVPreviousViewController * staticEventDetailViewController;
+(IVPreviousViewController *)sharedInstance;
IVPreviousViewController.m
+(IVPreviousViewController *)sharedInstance {
return staticEventDetailViewController;
}
Причина такого подхода - В конкретном случае использования в нашем ViewController он должен popbackto IVPreviousViewController
эй @Abhinav я добавил некоторые более обновления в моем вопросе. Дайте мне знать, если у вас есть более глубокое понимание. VC никогда не останется в памяти, потому что он создал __weak static. Но я все еще думаю, что это не лучший подход. – Tariq
Как я уже сказал, всегда избегайте синглтона, особенно в этом случае мы теряем больше, чем выигрыш. Функциональность может быть достигнута путем слабой ссылки на «IVPreviousViewController». Не нужно хранить 'IVPreviousViewController' всегда в памяти. Запустите приложение на инструментах, и это сделает его более понятным. – Abhinav
Эй @ Абхинав, Извините, что привел вас в нашу ссору :) Мы используем статический слабый указатель для ссылки на IVPreviousViewController. Итак, любые предложения/идеи о том, почему бы не использовать слабый указатель? – Shashank