Nig*_*der 0 for-loop allocation objective-c ios
我有一个正常工作的for循环.我添加了一个新的UIVIew子类分配,在每个循环迭代中完成:
for (n=something; n>0; n--)
{
//(...)
MyView* theview=[[myView alloc]initWithFrame:self.frame];
float y=sin(DEGREES_TO_RADIANS(currentAngle));
float x=cos(DEGREES_TO_RADIANS(currentAngle));
theview.point1=CGPointMake(x, y);
// printf x & y here
[self addSubview:theview];
}
Run Code Online (Sandbox Code Playgroud)
事实上,视图是分配的,但是当我查看视图时,循环内定义的点与point1不同.
实际上,视图的所有迭代似乎都是在循环结束之后分配的,正如在视图的drawrect方法中的printf所述,在调用循环的所有迭代中的所有printf之后调用该方法.如果不清楚,我会看到类似的东西:
x = 1 Y = 1 x = 2 y = 2 x = 3 y = 3 printf来自视图printf来自视图printf的视图
.为什么?提前致谢!
视图将立即分配和初始化.它们也会立即添加到视图层次结构中.但是,在下次渲染视图层次结构之前,不会要求它们自我渲染.由于这个刷新是在你完成分配视图之前阻塞的主线程上完成的,所以在你至少从这个方法返回之前,你的视图'-drawRect:方法永远不会被调用(可能还有其他方法)在当前事件链和您当前的堆栈上).