iphone - 为什么我的 UINavigationController 在发布配置时崩溃?

标签 iphone ios uinavigationcontroller

我需要删除堆栈中以前的 View Controller 。我过去曾成功使用过这种方法,没有任何问题:

NSMutableArray *vcs = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
    BOOL removedFlag = YES;
    while (removedFlag == YES)
    {
        removedFlag = NO;
        for (UIViewController *vc in vcs)
        {
            if( ![vc isKindOfClass:[self class]] && ![vc isKindOfClass:[MenuVC class]] )
            {
                [vcs removeObject:vc];
                removedFlag = YES;
                break;
            }
        }
    }
    [self.navigationController setViewControllers:[NSArray arrayWithArray:vcs]];

现在我正在更新应用程序,它在发布配置时莫名其妙地崩溃了,而不是在调试时。此外,在 Debug模式下没有任何警告。我认为 SDK 发生了一些变化。它以前从未这样做过。

我已经制作了一个示例项目: http://dl.dropbox.com/u/7834263/RemoveTest.zip

这是一个支持 ARC 的项目。

最佳答案

第一行实际上应该是:

NSMutableArray *vcs = [self.navigationController.viewControllers mutableCopy];

NSMutableArray 是 NSArray 的子类。 arrayWithArray 是 NSArray 类的一个方法——它创建一个不可变数组。 mutableCopy 方法创建原始数组的可变副本。你真的不应该能够在你的 vcs 数组上调用 removeObject,因为它从来都不是一个 NSMutableArray —— 它是一个 NSArray。

关于iphone - 为什么我的 UINavigationController 在发布配置时崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10391063/

相关文章:

iphone - 无法删除开发者证书

iphone - Xcode 5,如何构建具有与 IOS 6 和 IOS 7 兼容的 UI 的应用程序

ios-如何将导航 Controller 添加到项目中?

iphone - UITextField 在代码更改时触发 UITextFieldTextDidChangeNotification?

iOS 分发证书,由其他开发者签名

iphone - iOS 中的并行下载

ios - 如何查看()的内容

ios - 无法将 json 字符串转换为 json 对象

iphone - iOS:自定义图像 UIBarButtonItem 不响应触摸

ios - Swift:如何在使用 XLPagerTabStrip 中的 subview Controller 后返回到第一个 View Controller