0

私のアプリでは、非常に退屈なエラーです! アプリをビルドするたびに、「EXC_BAD_ACCESS」エラーが発生します。大丈夫です。エラーが発生する可能性がありますが、アプリを再度ビルドしようとすると、別のコード行でエラーが返されます!!

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UIStoryboard *mainStoryboard = nil;
if ([[UIScreen mainScreen] bounds].size.height <= 480) {
    mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
} else {
    mainStoryboard = [UIStoryboard storyboardWithName:@"Main4er" bundle:nil];
}

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self.window setRootViewController:[mainStoryboard instantiateInitialViewController]];
[self.window makeKeyAndVisible]; // HERE THE ERROR COMES SOMETIMES
return YES; }

どこが悪いのかわからない!リリース、保持は使用しません。アプリの開発を開始したときにオフにしました。

次のような行でエラーが発生することがあります。

UILabel * labelNiederlage = [[UILabel alloc] initWithFrame:CGRectMake(243, -2, 40, 26)];

誰か助けてくれませんか?

4

3 に答える 3

0

アイデアとして、ストーリーボードを使用している場合は、これらの行を安全に削除できます

UIStoryboard *mainStoryboard = nil;
    if ([[UIScreen mainScreen] bounds].size.height <= 480) {
        mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    } else {
        mainStoryboard = [UIStoryboard storyboardWithName:@"Main4er" bundle:nil];
    }
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self.window setRootViewController:[mainStoryboard instantiateInitialViewController]];

1 つのストーリーボードで動的な高さの要素を作成できるため、画面の高さが異なる 2 つのストーリーボードを作成することもお勧めできません。

おそらく、プロパティを使用していないため、アプリが失敗する可能性mainStoryboad(strong, nonatomic)あります。ポインタへの強い参照が必要であり、プロパティを使用すると自動的に維持されますself.mainStoryboad

于 2013-10-30T15:46:33.110 に答える
0

数行のコードから判断するのは簡単ではありません。Dig が言ったように、ストーリーボードは保持されない場合があります。それでも、次のアプローチをお勧めします。

1)問題の原因となる可能性のあるダングリングポインターがどこかにないことを確認してください。

-> 絵コンテ (および他のもの) で何をするかを見てみましょう。何とかどこかに保管してますか?慣例により、storyboardWithName は自動解放されたオブジェクトを返します。何もしない場合は、自分で保持する必要がある場合があります。他の人も同じです。

-> ゾンビ モードをオンにして計測器を実行すると、何かおかしなことがわかるかもしれません。これと保持カウントを有効にすることをお勧めします

2) これで見つけられない場合は、ほとんど空のストーリーボードを使用して、新しいプロジェクトで簡単なテスト ケースを作成します。これは、ここで何が問題なのかを理解するのに役立つかもしれません。

3) コードを実際の例と比較します。それらの負荷があります。1つ入手して、違いを見つけてください。

お役に立てれば。

于 2013-10-30T15:53:32.297 に答える
0

このタイプのエラーに出くわしたときはいつでも、ゾンビ オブジェクトを使用して何が問題なのかのヒントを得ることができます。

" YourProjectName " (stop btn のすぐ隣) ->Edit Scheme->Enable Guard MallocEnable Zombi Objectsに移動します。次に、ブレーキポイントを設定して、何が起こっているかを確認します。

ただし、これは非常にコストのかかる操作であるため、問題を解決するときにオフにすることをお勧めします。

よろしく、

HrisTo

于 2013-10-30T15:54:39.877 に答える