目标c中的EXC_BAD_ACCESS

时间:2012-03-23 05:55:17

标签: objective-c cocoa-touch nsstring autorelease stringwithformat

有人可以帮我处理下面的代码吗?在此循环中随机获取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];

    }
}
顺便说一下,我在线阅读了一些帖子,有人告诉我这样做可以解决问题。我不确定这一点,为什么需要在此对象仍在其范围内时保留自动释放对象。更重要的是我不应该在某处释放retain对象吗?否则会导致内存泄漏。

替换

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

使用:

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

2 个答案:

答案 0 :(得分:0)

我已经在我的设备上测试了它并没有崩溃。

我在self.view中添加了't',我认为myView可能存在问题

答案 1 :(得分:0)

此错误是因为您使用之前发布的对象。尝试设置这些设置:enter image description here 它们位于Project&gt;&gt;编辑方案&gt;&gt;参数

然后将控制台输出放在这里。