2011-05-24 71 views
0

我希望我写入的每个图形组件的地址能够稍后处理,因为它是一个大矩阵,我不想这样做:“for(UIView *myView in [self.view subviews]){” 。 < - 连接速度慢,经常没有得到我想要的。赋值使得整型指针没有强制转换:地址问题

但是我可以通过保持地址和指针地址设置为它得到期望的结果,但我得到一个警告:

UIView *myView = [[UIView alloc] initWithFrame:RectFrame]; 
address[j][i] = (int) myView; 
myView = address[j][i]; // <---Assignment makes pointer from integer without a cast 

好了,我试着和(UIView的)投它,并得到...

UIView *myView = [[UIView alloc] initWithFrame:RectFrame]; 
address[j][i] = (int) myView; 
myView = (UIView) address[j][i]; // <---Conversion to non-scalar type requested 

那么我该如何安抚和清除警告“ssignment使整数指针没有投”?

谢谢

回答

1

第一关:迭代,处理和绘图1000 UIViews很可能将是太慢,无论你怎么做。我敢打赌,“绘图”部分将成为你的瓶颈,所以我怀疑迭代通过subviews阵列或2D C阵列会在速度上产生明显差异。

也就是说,使警告消失,声明你的阵列为(UIView *)指针数组,而不是int

UIView *address[100][10]; 

那么你不需要做任何类型转换的任何地方。

+0

这个也适用,谢谢。 – jdl 2011-05-24 14:52:13

0

为什么不使用Tag属性,那么你可以使用[自viewWithTag:ATAG]。

+0

我有1000个元素...所以我不能做搜索:: for(UIView * myView in [self.view subviews]){。除非有另一种方式? – jdl 2011-05-24 14:24:29

+0

你不需要循环.... [myView setTag:1];然后检索它[self.view viewWithTag:1];将返回myView; – 2011-05-24 14:34:27

+0

(UIView)myView = [self.view viewWithTag:1]; ???谢谢 – jdl 2011-05-24 14:47:13

0

我无法理解你在做什么,而是直接的答案,应该是

myView = (UIView *) address[j][i]; 
+0

谢谢。这工作..我曾经在大括号外玩过星星,但失败了。忘了把它放进去。 – jdl 2011-05-24 14:25:21

相关问题