Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 设置窗口根视图控制器访问错误,没有堆栈跟踪_Objective C_Ios_Uiviewcontroller_Automatic Ref Counting - Fatal编程技术网

Objective c 设置窗口根视图控制器访问错误,没有堆栈跟踪

Objective c 设置窗口根视图控制器访问错误,没有堆栈跟踪,objective-c,ios,uiviewcontroller,automatic-ref-counting,Objective C,Ios,Uiviewcontroller,Automatic Ref Counting,编辑:这似乎是我犯的一个愚蠢的错误,在我处理之前,我提前收到了一个轮换更改通知。这引起了连锁反应,在某个不知名的地点发生了车祸。让我看看如何关闭/删除此问题 我的应用程序已经运行了一段时间,但我今天决定最终“正确”地实现它,即:使用视图控制器,而不是手动将单个视图添加到UIWindow。在我尝试将window.rootViewController设置为我的视图控制器之前,这一过程相当顺利 在ApplicationIDFinishLaunchingWithOptions之后的某个地方,它因访问错误

编辑:这似乎是我犯的一个愚蠢的错误,在我处理之前,我提前收到了一个轮换更改通知。这引起了连锁反应,在某个不知名的地点发生了车祸。让我看看如何关闭/删除此问题

我的应用程序已经运行了一段时间,但我今天决定最终“正确”地实现它,即:使用视图控制器,而不是手动将单个视图添加到UIWindow。在我尝试将window.rootViewController设置为我的视图控制器之前,这一过程相当顺利

在ApplicationIDFinishLaunchingWithOptions之后的某个地方,它因访问错误而崩溃。没有有用的stacktrace(它在程序集中崩溃),我也看不到它回到我的代码中的任何地方(我到处都放着日志)。只需将viewcontroller的视图添加到主窗口即可。这是代码的一部分:

-(BOOL) application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    ....
    self.window = [[UIWindow alloc] initWithFrame: [UIScreen mainScreen].bounds];
    self.viewController = [[MainViewController alloc]init];
    // if i uncomment this it crashes:
    // self.window.rootViewController = self.viewController;
    [self.window addSubview: viewController.view]; // Commented out if i use the rootViewController

    [self.window makeKeyAndVisible];
    NSLog(@"Did finish launching");
    return YES;
}
我尝试过很多调试方法(stacktrace不存在,手动执行代码需要很长时间,崩溃前不会调用日志),但我找不到问题。它在
libobjc.A.dylib'objc\u retain:
中崩溃,堆栈跟踪中唯一的其他内容是
objc\u storeStrong
。这不是一个保留/释放问题(至少不是直接的),因为我使用的是ARC。最后一个NSLog被调用,如果我手动执行,它将退出didFinishLaunching

我可以在不设置根视图控制器的情况下让应用程序正常工作,但重做这部分的全部目的是“正确”地完成所有事情(例如,在没有根视图控制器的情况下,旋转必须相对粗糙)


所以,请告诉我你有一些想法!因为这让我抓狂:S

你不需要这样做:

[self.window addSubview: viewController.view];
将视图控制器设置为根视图控制器时,其视图已成为窗口的子视图

编辑

然而,这不会引起任何问题

也许问题不在代码中。有时我的应用程序也会崩溃,我很生气。通常情况下,这是因为我从另一个文件夹中拖动项目,xcode发现权限有问题,或者由于其他(对我来说)未知的原因


尝试用alt+cmd+k清理项目。如果这不起作用,您可能会遇到权限问题。因此,创建另一个项目并复制您写入其中的所有文件。

这似乎是我犯的一个愚蠢的错误,我在处理之前过早收到了rotationChanged通知。这引起了连锁反应,在某个不知名的地点发生了车祸。无论如何,谢谢你的帮助

如果我使用rootviewcontroller,我会将其注释掉,很抱歉没有明确说明这一点。将编辑我的问题。您是否尝试过只设置self.window.rootViewController=[[MainViewController alloc]init]?现在我尝试了,但不起作用。谢谢你的想法,但轮换变更通知?你能详细说明一下吗?虽然这篇文章已经有4年多的历史了,但我相信是这样的通知:。在该事件的处理程序中,我尝试更改或设置一些尚未初始化的内容。