我正在和我的团队成员就 popToViewController 发生争执。
对我来说最好的方法是 Can i pop to Specific ViewController?
但是他认为我们应该创建一个viewController的静态实例然后调用
-(void)takeToPreviousViewController {
if([IVPreviousViewController sharedInstance]) {
[self.navigationController popToViewController:[IVPreviousViewController sharedInstance] animated:YES];
}
}
我强烈反对这种方法,因为我们在 IVPreviousViewController 中创建了一个与 currentViewController 无关的公共(public)方法。我们应该始终避免像这样公开方法。
谁能给我指出最佳方法的可靠理由。
更新:
IVPreviousViewController.h
__weak static IVPreviousViewController * staticEventDetailViewController;
+(IVPreviousViewController *)sharedInstance;
IVPreviousViewController.m
+(IVPreviousViewController *)sharedInstance {
return staticEventDetailViewController;
}
这种方法的原因 - 在我们的 viewController 中的特定用例中,它必须弹出到 IVPreviousViewController
最佳答案
这是我的看法:
我支持你的观点。我们应该尽可能避免静态共享实例。静态实例保留在内存中,直到应用程序生命周期为止。从该实例引用的所有其他对象也将保留在内存中。
通过上面共享链接VC中提到的方法,不再需要的将被取出内存。此外,如果您没有很多 VC,最好从源 VC 到目标 VC 的弱引用,而不是循环并选择目标 VC。
是的,在 Objective-C 的上下文中为了更好的可读性,头文件应该只包含那些外部世界真正需要的 API。
关于ios - 调用 popToViewController 的正确方法 - iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32546217/