ios - 调用 popToViewController 的正确方法 - iOS

标签 ios objective-c uinavigationcontroller poptoviewcontroller

我正在和我的团队成员就 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/

相关文章:

ios - 一个 BarButtonItem 的多个操作

ios - Alamofire json返回 "="而不是 ":"

iOS 7 UIImagePickerController 相机无图像

ios - 自定义 Collection View 单元格: content under margin height not visible

uinavigationcontroller - shouldAutorotate、supportedInterfaceOrientations 和 preferredInterfaceOrientationForPresentation 在 iOS 7 中无法按预期工作

swift - UIImagePickerController 未正确关闭

ios - 如何根据 UIScrollview 内的按钮框架大小水平滚动 UIScrollView

iOS - 应用内购买 - 订阅模式

ios - 如何将 UIView 旋转 45 度?

objective-c - NSTableRowView "Empty Rows"