誰かが以下のコードで私を助けてくれますか? このループで 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;