zoukankan      html  css  js  c++  java
  • 关于数组中加入相同的view的试验

    随便新建一个工程,然后在控制器中粘贴如下代码

    - (void)viewDidLoad {

        [super viewDidLoad];

        UIView * view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];

        view.backgroundColor = [UIColor greenColor];

        NSArray * arr = [[NSArray alloc]initWithObjects:view, view, nil];

        NSLog(@"====-----%@",arr);

        

        UIView * view1 = arr[0];

        view1.frame = CGRectMake(0, 100, 100, 100);

        [self.view addSubview:view1];

        

        UIView * view2 = arr[1];

        view2.frame = CGRectMake(0, 100, 20, 20);

        [self.view addSubview:view2];

        

        UIView * view3 = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 200, 200)];

        view3.backgroundColor = [UIColor blueColor];

        [self.view addSubview:view3];

        UIView * view4 = [[UIView alloc]initWithFrame:CGRectMake(0, 300, 200, 200)];

        view4.backgroundColor = [UIColor redColor];

        [self.view addSubview:view4];

            

    //    [view3 addSubview:view1];

    //    [view3 addSubview:view2];

    //一个view 只能加到最后一个 父控件上

        [view4 addSubview:view2];

        [view3 addSubview:view1];

    }

    运行后 的打印如下

    ====-----(

        "<UIView: 0x7fc8cdd01760; frame = (0 0; 100 100); layer = <CALayer: 0x600001cacfa0>>",

        "<UIView: 0x7fc8cdd01760; frame = (0 0; 100 100); layer = <CALayer: 0x600001cacfa0>>"

    )

     

    也就是说 虽然 数组中有两个元素  但是两个元素的地址 全都指向了同一块内存  也就是  view所在的内存。

    简单理解为 数组存了 这个view对象的 指针, 通过  arr[0] 和 arr[1]拿到的都是同一个view。 

    所以最后 加到view3 上一个view  加到view4上一个view   加的都是同一个。 而同一个view只能加到一个superview上 ,之前加的自动失效  或者可以理解为 自动被remove后 然后  加到新的 superView上。所以运行模拟器 就有了 一下的现象

  • 相关阅读:
    Android教程 -07 Activity的任务栈和启动模式
    ViewPager封装工具类: 轻松实现APP导航或APP中的广告栏
    hdu 5900 区间dp
    状压dp入门
    poj 3280
    hdu 4745 two Rabits
    食了智,过来水一发
    poj 2142 the Balance
    hdu 6188 Duizi and Shunzi
    hdu 6186 CS Course
  • 原文地址:https://www.cnblogs.com/isItOk/p/4886469.html
Copyright © 2011-2022 走看看