我有些困惑。不是我面临的真正的错误或问题。我想知道一些事情,但我不确定这是解决这类问题的正确地方,但这是我的问题:
关于我的问题,我试图在两个视图上映射单个手势。
现在我很想知道为什么这不起作用?我继续进行基础知识,以防万一我有任何 NSObject 子类,让我们说如果NSString
,我将其添加NSMutableArray
如下:
NSString *strTest = @"Test String";
[aryTest1 addObject:strTest];
[aryTest2 addObject:strTest];
字符串被添加到两个数组中。现在我正在做的是我创建了一个标签,为标签设置标签并在两个视图中添加如下:
UILabel *lblTemp = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 100, 20)];
[lblTemp setTag:1];
[lblTemp setText:@"Label"];
[vw1 addSubview:lblTemp];
[vw2 addSubview:lblTemp];
现在每个视图都有一个子视图数组。当我们尝试在该视图的子视图中添加一个对象时,为什么两个视图中都没有添加这个对象?我得到的结果是我的第二个视图显示了标签,但第一个视图没有标签。
如果我注释了代码的最后一行并且不在 vw2 中添加标签,则标签将添加到 vw1 中。比我尝试了不同的事情。
UILabel *lblTemp = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 100, 20)];
[lblTemp setTag:1];
NSMutableArray ary1 = [[NSMutableArray alloc] init];
NSMutableArray ary2 = [[NSMutableArray alloc] init];
[ary1 addObject:lblTemp];
[ary2 addObject:lblTemp];
两个数组的计数均为 1。这意味着我在数组中添加了标签。之后,我尝试在视图中添加数组的对象而不是问题。标签仅在第二个视图中添加:
[vw1 addSubview:[ary1 objectAtIndex:0]];
[vw2 addSubview:[ary2 objectAtIndex:0]];
当我在初始化后打印标签的retainCount时,每次retaincount为1时都添加array1和array2。所以我认为数组没有保留同一个对象的引用。它是一个复制到数组中的新对象。为什么标签没有被添加到同一个视图中?
对象添加到任何视图的子视图的实际内部过程是什么。据我所知,子视图是一个数组类型,而不是发生了什么?谁能解释我?
提前致谢