0

編集:これは私にとって愚かな間違いだったようです。処理する前に、rotationChanged通知を受け取るのが早すぎました。それは連鎖反応を引き起こし、いくつかのあいまいな場所でクラッシュを引き起こしました。この質問を閉じる/削除する方法を教えてください...

私のアプリはしばらくの間正常に動作していますが、今日、最終的に「正しく」実装することにしました。つまり、UIWindowに単一のビューを手動で追加する代わりにビューコントローラーを使用します。これは、window.rootViewControllerをビューコントローラーに設定しようとするまで、しばらくの間非常にスムーズに進みました。

applicationDidFinishLaunchingWithOptionsの後のどこかで、不正なアクセスでクラッシュします。有用なスタックトレースはなく(アセンブリでクラッシュします)、コードに戻るのがわかりません(ログをあちこちに配置しました)。ビューコントローラのビューをメインウィンドウに追加するだけで問題なく動作します。これはコードの一部です:

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

私はかなりのデバッグ方法を試しましたが(スタックトレースが存在せず、コードを手動でステップ実行するのに時間がかかり、クラッシュする前にログが呼び出されません)、問題を見つけることができません。でクラッシュしlibobjc.A.dylib'objc_retain:、スタックトレースの他の唯一のものはですobjc_storeStrong。私はARCを使用しているので、(少なくとも直接ではなく)保持/解放の問題ではありません。最終的なNSLogが呼び出され、手動でステップスルーすると、didFinishLaunchingから抜け出します。

ルートビューコントローラーを設定しなくてもアプリを動作させることができますが、この部分をやり直すことの全体的なポイントは、すべてを「適切に」実行することでした(たとえば、ルートビューコントローラーなしで回転を比較的ハックする必要があります)。

StackOverflow、アイデアがあることを教えてください!これが私を夢中にさせているので:S

4

2 に答える 2

0

これを行う必要はありません:

[self.window addSubview: viewController.view];

ビューコントローラをルートビューコントローラとして設定すると、そのビューはすでにウィンドウのサブビューになります。

編集

ただし、これで問題が発生することはありません。

たぶん、問題はコードにありません。時々私のアプリもクラッシュし、私は怒ります。通常、これは、プロジェクトを別のフォルダーからドラッグし、xcodeがアクセス許可の問題を検出したため、またはその他の(私にとって)不明な理由で発生します。

alt + cmd+kを使用してプロジェクトをクリーンアップしてみてください。それが機能しない場合は、権限に問題がある可能性があります。したがって、別のプロジェクトを作成し、それに書き込んだすべてのファイルをコピーします。

于 2013-01-02T16:41:58.780 に答える
0

これは私にとってばかげた間違いだったようです。処理する前に、rotationChanged通知を受け取るのが早すぎました。それは連鎖反応を引き起こし、いくつかのあいまいな場所でクラッシュを引き起こしました。とにかく助けてくれてありがとう!

于 2013-01-02T17:15:24.430 に答える