Iphone 如何删除已发布的子视图
初学者的问题:在将子视图添加到视图中并释放后,我正在尝试删除该子视图,即:Iphone 如何删除已发布的子视图,iphone,objective-c,cocoa-touch,uiview,Iphone,Objective C,Cocoa Touch,Uiview,初学者的问题:在将子视图添加到视图中并释放后,我正在尝试删除该子视图,即: for (int i = 0; i < 9, i++) { UIButton *btn = [indexButtons objectAtIndex:i]; btn.tag = x; [notePage1 addSubview:btn]; [btn release]; } 但这只会使应用程序崩溃。我根本没有错误日志应用程序只是终止。如何正确执行此操作?您不应该释放按钮,因为
for (int i = 0; i < 9, i++) {
UIButton *btn = [indexButtons objectAtIndex:i];
btn.tag = x;
[notePage1 addSubview:btn];
[btn release];
}
但这只会使应用程序崩溃。我根本没有错误日志应用程序只是终止。如何正确执行此操作?您不应该释放按钮,因为您没有分配它 这都是关于对象所有权的。你不应该释放一个你不拥有的东西。您可以通过发送以下消息之一获取对象的所有权:
- 阿洛克
- 新的
- 保留
- 抄袭
- 阿洛克
- 新的
- 保留
- 抄袭
- 您不应该释放按钮,因为您没有分配它
这都是关于对象所有权的。你不应该释放一个你不拥有的东西。您可以通过发送以下消息之一获取对象的所有权:
retain
、alloc
、copy
或new
,则只能使用release
您的代码应该是:
for (int i = 0; i < 9, i++) {
UIButton *btn = [indexButtons objectAtIndex:i];
btn.tag = x;
[notePage1 addSubview:btn];
}
添加到superview会自动增加保留计数,并自动删除释放。你不必担心这些 您不应该在这些代码片段中释放按钮。如果您专门使用了
retain
、alloc
、copy
或new
,则只能使用release
您的代码应该是:
for (int i = 0; i < 9, i++) {
UIButton *btn = [indexButtons objectAtIndex:i];
btn.tag = x;
[notePage1 addSubview:btn];
}
添加到superview会自动增加保留计数,并自动删除释放。你不必担心这些 谢谢!但如果不是这样,这就是解决问题的方法,对吗?还是有更优雅的方式?没关系,只要你不释放你没有分配的对象,“你也没有复制或保留它”,也应该在答案中完整。谢谢!但如果不是这样,这就是解决问题的方法,对吗?还是有更优雅的方式?没关系,只要你不释放你没有分配的对象,“你也没有复制或保留它”,也应该在答案中完整。谢谢!天啊,我早该知道的。。。谢谢你提醒我-希望这次我会记得!谢谢天啊,我早该知道的。。。谢谢你提醒我-希望这次我会记得!
UIButton *btn = [indexButtons objectAtIndex:0];
if ([btn isDescendantOfView:notePage1]) { [btn removeFromSuperview]; }