0

誰かが以下のコードで私を助けてくれますか? このループで EXC_BAD_ACCESS をランダムに取得します。[NSString stringWithFormat:....] に何か問題があると思いますが、その理由と修正方法がわかりません。どうもありがとうございました。

for(int i=0;i<row;i++)
     {
    for(int j=0;j<col;j++)
    {

        CGRect tileFrame=CGRectMake(i*tileSize, j*tileSize, tileSize, tileSize  );
        UILabel * t=[[UILabel alloc]initWithFrame:tileFrame];


        t.text=[NSString stringWithFormat:@"%i",j*row+i];




         ///If there is a crashing ,it always stop at here, right after the [NSString stringWithFormat:.....]
         t.backgroundColor=[UIColor clearColor];




        //NSString * temps=[NSString stringWithFormat:@"%i",j*row+i ];
        //t.text=temps;

       [myView addSubview:t];

       [t release];

    }
}

ところで、オンラインでいくつかの投稿を読みましたが、以下の方法で問題を解決するように言われました。このオブジェクトがまだスコープ内にあるのに、なぜ autorelease オブジェクトを保持する必要があるのか​​ 、これについてはわかりません。さらに重要なことは、retain オブジェクトをどこかで解放するべきではありませんか? そうしないと、メモリ リークが発生します。

交換

 t.text=[NSString stringWithFormat:@"%i",j*row+i];

と:

 NSString * temps=[NSString stringWithFormat:@"%i",j*row+i ];
[temps retain];
 t.text=temps;      
4

2 に答える 2

0

このエラーは、以前にリリースされたオブジェクトを使用しているためです。これらの設定をセットアップしてみてください:ここに画像の説明を入力 それらは Project >> Edit Scheme >> Arguments にあります

次に、コンソール出力をここに配置します。

于 2012-03-23T07:33:59.390 に答える
0

私のデバイスでテストしましたが、クラッシュしていません。

self.view に 't' を追加しました。myView に問題がある可能性があると思います

于 2012-03-23T06:15:58.850 に答える