gpt4 book ai didi

objective-c - UISplitViewController 设置 viewControllers 第二次崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:04:31 24 4
gpt4 key购买 nike

我在 ARC 上使用 UISplitViewController

我在我的 AppDelegate 中设置了 Controller ,然后将其设为 rootViewController。我已确保将其设为 property:

@property (strong, nonatomic) UISplitViewController *splitViewController;

使用 viewControllers 属性设置根和细节在第一次创建时工作正常。第二次设置时它再次正常工作,但我在第三次尝试设置 viewControllers 属性时遇到崩溃。

我是这样设置的:

    Screens *edit = [[Screens alloc] initWithStyle:UITableViewStyleGrouped];
UINavigationController *c = [[UINavigationController alloc] initWithRootViewController:edit];

if ([Utility isIpad]) {
Map *a = (Map *)[[MyAppDelegate instance].splitViewController.viewControllers objectAtIndex:0];
NSArray *viewControllers = [NSArray arrayWithObjects:a, c, nil];
UISplitViewController *splitView = [MyAppDelegate instance].splitViewController;
splitView.viewControllers = viewControllers;// <--- Crashes here
} else {
[self presentModalViewController:c animated:YES];
}//end

为什么当我尝试设置 viewControllers 属性时它会崩溃?好像它已经发布了,但我知道 splitViewController 仍然存在......

这可能与 ARC 有关吗?

堆栈跟踪:

enter image description here

最佳答案

我刚才有同样的错误。在我的例子中,问题是我最初将详细 View Controller 设置为 UISplitViewController 的委托(delegate)。然后我重构使 Root View Controller 处理事情,但我忘记从 .xib 文件中删除连接。

因此,当我第一次设置 splitView.viewControllers 时一切正常,但随后我的原始细节 Controller 将被释放并且 UISplitViewController 留下了一个错误的指针作为委托(delegate)。下次我设置 viewControllers 属性时,UISplitViewController 试图通过指针调用它的委托(delegate)并崩溃了。

您写道,您在应用委托(delegate)中设置了 Controller ,因此这可能与您遇到的问题不完全相同。不过,请仔细检查以确保 UISplitViewControllerdelegate 属性设置正确!

关于objective-c - UISplitViewController 设置 viewControllers 第二次崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9779462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com