12

我有为 iOS 4.2 制作的应用程序,我正在 XCode 4.3.3 中进行开发并使用 iPhone 5.1 模拟器对其进行测试,一切正常。最近我决定测试应用程序如何在 iOS 6.0 上运行。尝试这个时,我面临两个问题:

  1. 所以,我用 XCode 4.5 打开应用程序并在 iPhone 6.0 模拟器上运行它。我在启动应用程序时经常遇到问题。XCode 只是说:在 iPhone 6.0 模拟器上运行完毕,停止按钮变灰(就像应用程序没有运行),iPhone 模拟器只是显示黑屏,没有任何反应。我必须 CMD+Q 它。这对我来说是个大问题,因为在多次失败后我设法成功地随机运行应用程序。

  2. 最终,有时,应用程序运行没有问题,我看到模拟器正在运行我的应用程序。应用程序仅在横向模式下进行。但是当模拟器运行应用程序时,它会保持纵向模式,并以纵向模式显示专为横向屏幕设计的应用程序。我已将 Supported Interface Orientations 设置为横向变体,并且在 Application-Info.plist 中也列出了这两个横向方向。

有谁知道发生了什么以及可能的解决方案?

提前谢谢了。


[编辑#1:添加了所有输出控制台消息]

控制台消息(对于现在不断发生的问题 1)说:

error: failed to attach to process ID 0

[编辑#2:解决第一个问题的小进步]

好吧,奇怪的事情正在发生。为了消除编辑#1中的错误,我做的第一件事是:

在 XCode 中转到:Product -> Edit Scheme -> Run [AppName].app -> Debugger 并将其从 LLDB 更改为 GDB

在此之后,来自编辑#1 的错误消失了,出现了新问题。现在运行应用程序后,我在 XCode 中收到状态消息:附加到 [AppName]并且 XCode 卡在该操作上。

如果有人给我答案,我想说我尝试了以下列表中的所有内容:

  • 转到窗口-> 管理器-> 派生数据-> 删除
  • 转到 Window -> Organizer -> [ProjectName] 并完全删除它,然后重新打开它
  • 重置 iPhone 模拟器设置
  • 重置 iPhone 模拟器 + 清理构建 + 退出模拟器 + 运行项目
  • 退出 XCode + 重启 Mac + 重新打开 XCode 并再次运行应用程序

以及各种这些动作排列。简单地说,我总是看到这个问题。发生在我身上的最好的事情是在这个组合中:

只打开 XCode 而不打开项目 -> 转到 Window -> Organizer -> [ProjectName] 并完全删除它 -> 退出 XCode -> 打开 iPhone 模拟器并重置设置 -> 退出 iPhone 模拟器 -> 重启 Mac -> 重新打开 XCode 并运行应用

有时在这种情况下,模拟器设法立即运行我的应用程序,这很棒。但是在关闭模拟器并再次从 XCode 运行应用程序后(在这两个操作之间不做任何事情),XCode 再次卡在Attaching to [AppName]上并且不会使用我的应用程序启动模拟器。

虽然模拟器不会从我的 XCode 应用程序启动,但应用程序本身存储在模拟器上,如果我单独运行模拟器并手动启动我的应用程序,应用程序会设法启动,但是我的问题描述中有第二个问题 - 布局问题。


[编辑#3:XCode 版本信息]

我忘了提及我的 XCode 版本:Xcode Version 4.5 (4G144l)


[编辑#4:“解决方案”]

我找到了“解决方案”(我说“解决方案”,因为我还没有设法在当前 XCode 版本中找到一个)。

我刚刚下载了XCode 版本 4.5 (4G182)并正常运行了我的应用程序(没有将调试器更改为 GDB),除了布局问题外一切正常,这肯定存在,因为与 iOS 5 相比,iOS 6.0 做了一些更改。我想这是在事实上是解决方案,因为我最初使用的这个版本的 XCode 不会被使用,因为它是一些 beta 版本。

所以,第一个问题解决了,仍然没有解决布局问题。


[编辑#5:最终解决方案]

好的,第二个问题解决了。有关我的第二个问题的所有信息,这是此链接上的答案:http: //yusinto.blogspot.de/2012/08/ios-6-auto-rotate-and-orientation.html

4

2 回答 2

8

就像我在编辑中所说的那样,我的第一个问题的解决方案是将 XCode 更新到版本 4.5 (4G182)。我的第二个问题的解决方案是替换已弃用的 iOS 5 方法:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

iOS 6 中引入了 2 种新方法:

- (NSUInteger)supportedInterfaceOrientations
- (BOOL)shouldAutorotate

之后,应用程序工作正常。

[编辑 #1:添加支持 iOS 5 和 iOS 6 的仅横向应用程序的工作示例]

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // Override point for customization after application launch.
    self.viewController = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
    self.window.rootViewController = self.viewController; 
    [self.window makeKeyAndVisible];

    return YES;
}

主视图控制器.m

#pragma mark - Orientation support

- (BOOL)shouldAutorotate {

    return YES;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight) || (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}

- (NSUInteger)supportedInterfaceOrientations {

    return UIInterfaceOrientationMaskLandscape;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {

    return UIInterfaceOrientationLandscapeLeft;
}
于 2012-09-19T10:49:51.770 回答
2

完全删除\Library\Application Support\iPhone Simulator文件夹并从 XCode 运行模拟器对我有用。

现在我可以从 XCode 运行 iOS 6.0 Simulator。

于 2012-10-06T02:52:39.590 回答