Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何删除已发布的子视图_Iphone_Objective C_Cocoa Touch_Uiview - Fatal编程技术网

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]; }