启动画面动画在Xcode 7 GM(iOS9)中不受支持。应用程序会崩溃并显示错误。

4

我在我的应用程序中使用以下代码来显示一个动画的启动画面。在Xcode-6.4(iOS 8)中,应用程序工作正常,但是在Xcode-7GM版本(iOS9)中,应用程序会崩溃并出现错误。

window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    imageArray = [[NSMutableArray alloc] initWithCapacity:IMAGE_COUNT];
    // Build array of images, cycling through image names
    for (int i = 1; i <= IMAGE_COUNT; i++)
     [imageArray addObject:[UIImage imageNamed:
                               [NSString stringWithFormat:@"image__%d.png",i]]];
    animationImageView  = [[UIImageView alloc]  initWithFrame:self.window.bounds];
    animationImageView  .animationImages=[NSArray arrayWithArray:imageArray];
    // One cycle through all the images takes 3.5 seconds
    animationImageView .animationDuration = 3.5;
    // Repeat forever
    animationImageView  .animationRepeatCount = 0;
    // Add subview and make window visible
    [window addSubview:animationImageView  ];
    [window makeKeyAndVisible];
    // Start it up animations
    [animationImageView   startAnimating];
    // Wait 3.5 seconds, then stop animation
   [self performSelector:@selector(stopAnimation) withObject:nil afterDelay:3.5];`

当我使用Xcode-7GM时,我收到以下错误信息:

在-[UIApplication _runWithMainScene:transitionContext:completion:](/BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3505.16/UIApplication.m:3294)中的断言失败。


1
那不是完整的错误信息。有一个断言失败。什么是断言失败? - matt
1
这是我在日志中看到的完整错误信息: 2015-09-14 10:11:59.073 appname[721:11491] NSURLSession/NSURLConnection HTTP 加载失败 (kCFStreamErrorDomainSSL, -9802) 2015-09-14 10:11:59.441 appname[721:11367] *** 在 -[UIApplication _runWithMainScene:transitionContext:completion:] 中断言失败,/BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3505.16/UIApplication.m:3294 - narendrakumar b
真的吗?它显示了“断言失败”,但却没有告诉你这个断言是什么(没有断言消息)?这很奇怪。然而,从 kCFStreamErrorDomainSSL 来看,问题似乎与网络有关。你是否在启动时进行某种类型的网络操作?(不好的想法。)并且你是否记得在 iOS 9 中,默认情况下只能使用 https: - matt
我也遇到了这个错误:“-[UIApplication _runWithMainScene:transitionContext:completion:] 中的断言失败,/BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3505.16/UIApplication.m:3294”,如何解决这个错误? - Akash Raghani
6个回答

11
[window setFrame:[[UIScreen mainScreen] bounds]];

1

看起来你正在尝试进行一些网络操作。在iOS 9中,默认情况下,所有的网络通信都必须是安全的。如果你尝试进行一个http:请求,它将会失败;你必须使用https:(除非你在Info.plist中关闭了此功能)。


1
根据我的经验,如果是这种情况,您实际上会在控制台中收到应用传输安全警告。 - race_carr
@race_carr 有时候会出现这种情况。:) 但我也见过它默默地失败。 - matt

0
在我的情况下,解决此错误消息的方法是更新名为Loopback的CocoaPods依赖项(我相信它会向应用程序添加一个额外的UIWindow)。

0
我遇到了同样的问题,通过移除 [window makeKeyAndVisible]; 解决了它。
在 didFinishLaunchingWithOptions: 中,需要将 self window 设置为根视图控制器:
[self.window setRootViewController:navController];

0

对于像jonmo这样的人,这个错误是由于在退出didFinishLaunchingWithOptions之前未定义rootViewController导致的。

这样做解决了我的问题。

Xcode 7之前,这只是一个警告,现在似乎成为了一个硬性停止。


0

我曾经遇到过同样的问题,通过替换 Appdelegate.m 中下面这行代码已经解决了。

[window addSubview:viewController.view];

使用

[window setRootViewController:viewController];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接