12

私はiOS4.2用にアプリケーションを作成し、XCode 4.3.3で開発を行い、iPhone 5.1 Simulatorでテストしましたが、すべて正常に機能しました。最近、iOS6.0でアプリケーションがどのように動作するかをテストすることにしました。これを試すとき、私は2つの問題に直面します。

  1. そこで、XCode 4.5でアプリケーションを開き、iPhone6.0Simulatorで実行します。アプリケーションの起動に問題があります。XCodeは次のように述べています。iPhone6.0シミュレーターでの実行が終了すると、停止ボタンが灰色になり(アプリが実行されていないように)、iPhoneシミュレーターに黒い画面が表示され、何も起こりません。CMD+Qする必要があります。そして、これは私にとって大きな問題です。なぜなら、私は多くの失敗の後でアプリケーションをランダムに正常に実行することができたからです。

  2. 最終的に、そして時々、アプリケーションは問題なく実行され、エミュレーターが私のアプリケーションを実行していることがわかります。アプリケーションはランドスケープモードでのみ作成されます。ただし、シミュレーターがアプリケーションを実行すると、ポートレートモードのままになり、ポートレートモードのランドスケープ画面用に設計されたアプリケーションが表示されます。サポートされているインターフェイスの向きを両方のランドスケープバリアントに設定しました。Application-Info.plistには、これら2つのランドスケープの向きもリストされています。

誰かが何が起こっているのか、そして可能な解決策を知っていますか?

よろしくお願いします。


[編集#1:すべての出力コンソールメッセージを追加]

コンソールメッセージ(現在発生し続けている問題1の場合)は次のように述べています。

error: failed to attach to process ID 0

[編集#2:最初の問題の解決における小さな進歩]

さて、奇妙なことが起こっています。編集#1からエラーを排除するために私が最初にしたことは、次のとおりです。

XCodeで、[製品]->[スキームの編集]->[[AppName] .app]-> [デバッガー]に移動し、LLDBからGDBに変更します。

この後、編集#1のエラーはなくなりましたが、新しい問題があります。アプリケーションを実行した後、XCodeにステータスメッセージが表示されます:[AppName]に接続すると、XCodeはそのアクションでスタックします。

誰かが私に答えをくれたら、私は以下のリストからすべてを試したと言いたいです:

  • [ウィンドウ]->[オーガナイザー]->[派生データ]->[削除]に移動します
  • [ウィンドウ]->[オーガナイザー]->[ProjectName]に移動し、完全に削除してから再度開きます
  • iPhoneシミュレータの設定をリセットする
  • iPhoneシミュレーターをリセット+ビルドをクリーンアップ+シミュレーターを終了+プロジェクトを実行
  • XCodeを終了し、Macを再起動し、XCodeを再度開いて、アプリケーションを再度実行します

そして、これらのアクションの順列のすべての種類。簡単に言えば、私はいつもこの問題を目にします。私に起こった最高のことは、この組み合わせの間にありました:

プロジェクトを開かずにXCodeのみを開く->ウィンドウに移動->オーガナイザー->[ProjectName]そして完全に削除する->XCodeを終了する->iPhoneシミュレーターを開いて設定をリセットする->iPhoneシミュレーターを終了する->Macを再起動する->XCodeを再度開いて実行する応用

この場合、シミュレーターがアプリケーションをすぐに実行できることがありました。これはすばらしいことです。しかし、シミュレーターを閉じてXCodeからアプリケーションを再度実行した後(これら2つのアクションの間に何も行わずに)、XCodeは[AppName]へのアタッチで再びスタックし、アプリケーションでシミュレーターを開始しません。

シミュレーターはXCodeからのアプリケーションで起動しませんが、アプリケーション自体はシミュレーターに保存されます。シミュレーターを個別に実行してアプリケーションを手動で起動すると、アプリケーションはなんとか起動しますが、2番目の問題で問題の説明にあります-レイアウトの問題。


[編集#3:XCodeバージョン情報]

XCodeバージョンについて言及するのを忘れました:Xcodeバージョン4.5(4G144l)


[編集#4:「ソリューション」]

「解決策」を見つけました(現在のXCodeバージョンでは解決策を見つけることができなかったため、「解決策」と言います)。

XCodeバージョン4.5(4G182)をダウンロードして、アプリケーションを正常に実行し(デバッガーをGDBに変更せずに)、レイアウトの問題を除いてすべてが正常に機能しています。私が最初に使用したこのバージョンのXCodeは、ベータバージョンの一部であったため、使用されないため、事実は解決策です。

したがって、最初の問題は解決されましたが、それでもレイアウトの問題を解決することはできませんでした。


[編集#5:最終的な解決策]

さて、2番目の問題は解決しました。私の2番目の問題に関するすべての情報については、このリンクの回答があります:http: //yusinto.blogspot.de/2012/08/ios-6-auto-rotate-and-orientation.html

4

2 に答える 2

8

私が編集で言ったように、私の最初の問題の解決策は、XCodeをバージョン4.5(4G182)に更新することでした。私の2番目の質問に対する解決策は、廃止されたiOS5メソッドを置き換えることでした。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

iOS6で導入された2つの新しいメソッド:

- (NSUInteger)supportedInterfaceOrientations
- (BOOL)shouldAutorotate

その後、アプリは問題なく動作します。

[編集#1:iOS5およびiOS6をサポートするランドスケープのみのアプリの動作サンプルを追加]

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;
}

MainViewController.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 SimulatorXCodeからシミュレータを実行するとうまくいきます。

これで、XCodeからiOS6.0シミュレーターを実行できます。

于 2012-10-06T02:52:39.590 に答える