我有些困惑。不是我面临的错误或问题。我想知道一些事情,我不确定这是否适合这类问题,但这是我的问题:
参考我的Question Here,我试图在两个视图上映射单个手势。
现在我很想知道为什么这不起作用?我接受了基础知识,如果我有任何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.这意味着我在我的数组中添加了标签。之后,我试图在视图中添加数组的对象,甚至是ame问题。标签仅在第二个视图中添加:
[vw1 addSubview:[ary1 objectAtIndex:0]];
[vw2 addSubview:[ary2 objectAtIndex:0]];
当我在初始化后打印retainCount of Label时,每次retaincount为1时都在array1和array2中添加。所以我认为数组没有保留同一对象的引用。它是一个在数组中复制的新对象。为什么不在同一视图中添加标签?
在任何视图的子视图中添加对象的实际内部过程是什么。据我所知,subview是一种数组类型而不是发生的事情?任何人都可以解释一下吗?
先谢谢
答案 0 :(得分:0)
不同之处在于addSubview
在将视图添加到新视图之前会自动从其超级视图中删除视图(请参阅类引用:http://developer.apple.com/library/ios/ipad/#documentation/uikit/reference/uiview_class/uiview/uiview.html),而数组将很乐意接受一个对象,即使它在另一个阵列中。
您可以创建标签的副本,并将其放在另一个视图中,但这是您需要做的。