Iphone 在for循环中回收标签并将其释放

Iphone 在for循环中回收标签并将其释放,iphone,memory-management,loops,for-loop,uilabel,Iphone,Memory Management,Loops,For Loop,Uilabel,当我想重复使用UILabel直到阵列中的记录用完时,创建UILabel并再次释放它的正确方法是什么 我想这样: // create label UILabel *labelIWishToRecycle; for (int i = 0; i < [myArrayFullOfItems count]; i++) { // Edit the label labelIWishToRecycle = [[UILabel alloc] initWithFrame:CGRectMake

当我想重复使用UILabel直到阵列中的记录用完时,创建UILabel并再次释放它的正确方法是什么

我想这样:

// create label
UILabel *labelIWishToRecycle;

for (int i = 0; i < [myArrayFullOfItems count]; i++) {
    // Edit the label
    labelIWishToRecycle = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 640)];
}

// Release label
[labelIWishToRecycle release];
//创建标签
UILabel*labelIWishToRecycle;
对于(int i=0;i<[myArrayFullOfItems计数];i++){
//编辑标签
labelIWishToRecycle=[[UILabel alloc]initWithFrame:CGRectMake(0,0320640)];
}
//释放标签
[labelIWishToRecycle release];
当我这样做的时候,我会因为释放它而崩溃。所以我就不放了。现在很有魅力。当然,这不是办法,所以我想知道是什么

我应该为数组中的每个项目创建并释放标签吗?或者我应该在for循环外部创建它,但在内部释放它?还是


提前感谢。

您在用什么标签!?如果要将其添加到视图中,则每次都必须使用新实例。。如果你只做尺寸计算或诸如此类的事情,你可以一遍又一遍地使用同一个标签

但诀窍是初始化局部变量:
UILabel*labelIWishToRecycle=nil

如果您已经这样做了,它是保存到发送发布(如果还没有分配真正的标签)。之前,您的指针指向一个随机地址,您正试图在该地址释放对象。在大多数情况下,这将是一场崩溃


(当数组计数为零时,猜测问题的情况就是这样。)

从您发布的内容来看,似乎您多次实例化labelIWishToRecycle,但只发布了一次。这就可以解释这些事故。如果你不释放它,程序将运行,但你会得到泄漏。