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

- (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上。所以运行模拟器 就有了 一下的现象

关于数组中加入相同的view的试验的更多相关文章

  1. Vue 改变数组中对象的属性不重新渲染View的解决方案

    Vue 改变数组中对象的属性不重新渲染View的解决方案 在解决问题之前,我们先来了解下 vue响应性原理: Vue最显著的一个功能是响应系统-- 模型只是一个普通对象,修改对象则会更新视图.受到ja ...

  2. Android中自定义样式与View的构造函数中的第三个参数defStyle的意义

    零.序 一.自定义Style 二.在XML中为属性声明属性值 1. 在layout中定义属性 2. 设置Style 3. 通过Theme指定 三.在运行时获取属性值 1. View的第三个构造函数的第 ...

  3. 解析plist文件(字典里包着数组,数组中又包含字典)

    #import "RootTableViewController.h" #import "City.h" @interface RootTableViewCon ...

  4. php从数组中取出一段 之 array_slice

    array array_slice ( array $array , int $offset [, int $length [, bool $preserve_keys ]] ) array_slic ...

  5. js从数组中随机取出不同的元素

    前言 上午处理个需求需要从一个总数组中随机取出不同的元素.共使用两个方法.第一种方法较常规,经测试有bug,数据量大以后随机几次返回的对象直接是function而不是object. 当然简单数据类型应 ...

  6. [LeetCode] Find All Numbers Disappeared in an Array 找出数组中所有消失的数字

    Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and ot ...

  7. [LeetCode] Find All Duplicates in an Array 找出数组中所有重复项

    Given an array of integers, 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others ...

  8. [LeetCode] Kth Largest Element in an Array 数组中第k大的数字

    Find the kth largest element in an unsorted array. Note that it is the kth largest element in the so ...

  9. [LeetCode] Search in Rotated Sorted Array II 在旋转有序数组中搜索之二

    Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed? Would this ...

随机推荐

  1. BZOJ 1711:[Usaco2007 Open]Dining吃饭(最大流)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1711 [题目大意] 每头牛都有一些喜欢的饮料和食物, 现在有一些食物和饮料,但是每样只 ...

  2. 【SAM】codevs3160-最长公共子串

    [题目大意] 求两个字符串的最长公共子串. [思路] 对第一个字符串建立后缀自动机,第二个字符串去匹配.cnt记录当前最长公共子串的长度,而ret记录答案. p代表位置指针,初始在rt位置. 对于第二 ...

  3. [转]Syntax error on token "Invalid Character", delete this token 的解决

    原文  http://blog.csdn.net/actsai/article/details/24256987 主题 Eclipse Unicode Java eclipse 中遇到了Syntax ...

  4. Codeforces Beta Round #1 B. Spreadsheets 模拟

    B. Spreadsheets 题目连接: http://www.codeforces.com/contest/1/problem/B Description In the popular sprea ...

  5. Failed to Attach to Process ID Xcode 解决办法

    方法1. go to the Product menu and find the Edit Scheme menu there. While in Edit Scheme window, select ...

  6. linux禁ping与限制ip登录

    以root进入linux系统,然后编辑文件icmp_echo_ignore_allvi /proc/sys/net/ipv4/icmp_echo_ignore_all将其值改为1后为禁止PING将其值 ...

  7. jQuery中的Ajax全局事件

    Ajax全局事件 全局事件会在有ajax请求的情况下触发. 方法名称 说明 ajaxStart(callback) Ajax请求开始时执行的函数 ajaxStop(callback) Ajax请求结束 ...

  8. 封装log4cp p

    log4cpp 是参考 log4j 所写的 c++ 版本的写 log 的库.可以在这里下载   http://log4cpp.sourceforge.net/   我的使用方法是: 1,定义了一个 _ ...

  9. 【iOS开发】canOpenURL: failed for URL

    控制台输出 如图是在我启动一个 Xcode 7 + iOS 9 的 App 之后,控制台的输出. 这在 Xcode 6.4 + iOS 8 时,是不会有的情况,原因是[为了强制增强数据访问安全, iO ...

  10. [Linux] Linux smaps接口文件结构

    在Linux内核 2.6.16中引入了一个系统内存接口特性,这个接口位于/proc/$pid/目录下的smaps文件中 ,一看内容发现是进程内存映像信息,比同一目录下的maps文件更详细些. 400d ...