美文网首页
为什么要用父子控制器

为什么要用父子控制器

作者: 走道牙的人 | 来源:发表于2016-07-14 17:03 被阅读27次

模拟场景:

  • 在一个控制器a的view中添加另一个控制器b的view,如果只是把b.view添加到a.view中,会存在的问题:
    • 1.重复创建过多的控制器b(b是局部变量,每次都会创建)
    • 2.出现了不好的现象:控制器b已经死了(因为是局部变量,所在代码块结束就会死),
      但是控制器的view还在(因为b.view添加到了a.view中,所以不会死),
      这样再去操作b.view上的控制事件(例如button点击),
      程序就会崩溃
- (IBAction)oneClick {
    XMGOneViewController *one = [[XMGOneViewController alloc] init];
    one.view.frame = CGRectMake(0, 64, self.view.frame.size.width, self.view.frame.size.height - 64);
    [self.view addSubview:one.view];
}
  • 如果对控制器b进行处理:定义为属性,并且强引用,进行懒加载可以解决上面的问题,又出现新的问题:
    3.3个控制器的view同时出现了(层叠了),也就是会同时绘制,渲染3个view,占用了系统很多资源
// 以下代码省略了2,3控制器,只列举了第一个
@interface ViewController ()
/** one控制器 */
@property (nonatomic, strong) XMGOneViewController *one;
@end
@implementation ViewController
- (IBAction)oneClick {
    // 创建控制器
    if (self.one == nil) {
        self.one = [[XMGOneViewController alloc] init];
        self.one.view.frame = CGRectMake(0, 64, self.view.frame.size.width, self.view.frame.size.height - 64);
    }
    
    // 添加控制器的view
    [self.view addSubview:self.one.view];
}
@end
  • 只要控制器在,控制器的view就在,因为控制器对view是强引用strong,也就是只要控制器在,就有一个强指针指向view,view就不会被销毁,即使view被removeFromSuperView,view也不会销毁,只是不会显示在superView

相关文章

  • 为什么要用父子控制器

    模拟场景: 在一个控制器a的view中添加另一个控制器b的view,如果只是把b.view添加到a.view中,会...

  • 父子控制器相关

    父子控制器:导航控制器,UITabBarViewController等。 父子控制器的设计原理:a控制器的View...

  • 父子控制器相关

    父子控制器相关 控制器父子关系的建立原则 如果2个控制器的view是父子关系(不管是直接还是间接的父子关系),那么...

  • 父子控制器

    父子控制器的小tips 控制器父子关系的建立原则 如果两个控制器的view是父子关系(不管直接还是间接的父子关系)...

  • 父子控制器详细解析

    父子控制器详细解析(一)父子控制器详细解析(二) —— 添加视图的层级问题

  • 父子控件、static的作用

    控制器父子关系的建立原则 - 如果2个控制器的view是父子关系(不管是直接还是间接的父子关系),那么这2个控制器...

  • 父子控制器的重要性(2018-06-03)

    控制器父子关系建立的原则 如果2个控制器的view是父子关系(不管是直接还是间接的父子关系),那么这两个控制器也应...

  • iOS-父子控制器

    控制器父子关系的建立原则 如果2个控制器的view是父子关系(不管是直接还是间接的父子关系),那么这2个控制器也应...

  • 父子控制器

    控制器父子关系的建立原则 如果2个控制器的view是父子关系(不管是直接还是间接的父子关系),那么这2个控制器也应...

  • 浅说控制器父子关系及示例展示

    控制器父子关系的建立原则 如果2个控制器的view是父子关系(不管是直接还是间接的父子关系),那么这2个控制器也应...

网友评论

      本文标题:为什么要用父子控制器

      本文链接:https://www.haomeiwen.com/subject/mheejttx.html