我正在与我的团队成员讨论popToViewController。
对我来说最好的方法是 Can i pop to Specific ViewController?
但他认为我们应该创建viewController的静态实例,然后调用
-(void)takeToPreviousViewController {
if([IVPreviousViewController sharedInstance]) {
[self.navigationController popToViewController:[IVPreviousViewController sharedInstance] animated:YES];
}
}
我强烈建议使用这种方法,因为我们在IVPreviousViewController中创建一个与currentViewController无关的公共方法。我们应该总是避免像这样暴露方法。
任何人都可以指出我最好的方法。
更新
IVPreviousViewController.h
__weak static IVPreviousViewController * staticEventDetailViewController;
+(IVPreviousViewController *)sharedInstance;
IVPreviousViewController.m
+(IVPreviousViewController *)sharedInstance {
return staticEventDetailViewController;
}
这种方法的原因 - 在我们的viewController中的特定用例中,它必须popback到IVPreviousViewController
答案 0 :(得分:2)
这是我对此的看法:
我支持你的意见。我们应尽可能避免使用静态共享实例。静态实例在应用程序生存期内保留在内存中。从该实例引用的所有其他对象也将保留在内存中。
使用上面提到的方法,不再需要的共享链接VC将从内存中取出。此外,如果您没有很多VC,最好从源VC中对目标VC进行弱引用,而不是循环并选择目标VC。
是的,在目标C的上下文中为了更好的可读性,头文件应该只包含那些外部世界真正需要的API。
答案 1 :(得分:1)
我认为你可以做这样的事情
[['product1',100],['product2',90], ...]