当我想重新使用它时,创建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];
当我以这种方式这样做时,我会因为释放而崩溃。所以我就是不释放它。现在就像一个魅力。当然,这不是方法,所以我想知道是什么。
我应该为数组中的每个项目创建和发布标签吗?或者我应该在for循环之外创建它但是在其中释放它?或者......?
提前致谢。
答案 0 :(得分:0)
你在用什么标签!?如果要将它添加到视图中,那么每次都必须使用新实例..如果您只进行大小计算或类似的事情,那么您可以一遍又一遍地使用相同的标签。
但诀窍是初始化你的局部变量:
UILabel *labelIWishToRecycle = nil;
如果您已完成此操作,则保存为发送版本(如果尚未分配实际标签)。之前,您的指针指向一个随机地址,并且您正试图在该地址释放该对象。在大多数情况下,这将是一次崩溃。
(当你的数组计数为零时,猜测问题是一个。)