0

正常に動作している 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];
}

実際、ビューは割り当てられていますが、ループ内で定義されたポイントは、ビューを見るとポイント1と同じではありません。

実際、ループのすべての反復ですべての printf が呼び出された後に呼び出されるビュー drawrect メソッド内の printf によって述べられているように、ビューのすべての反復はループの終了後に割り当てられるようです。明確でない場合は、次のように表示されます。

x=1 Y=1 x=2 y=2 x=3 y=3 ビューからの printf ビューからの printf ビューからの printf

. なんで?前もって感謝します!

4

1 に答える 1

6

ビューはすぐに割り当てられ、初期化されます。ビュー階層にもすぐに追加されます。ただし、次にビュー階層がレンダリングされるまで、自分自身をレンダリングするように求められることはありません。この更新はメイン スレッドで行われ、ビューの割り当てが完了するまでブロックされます。ビューの -drawRect: メソッドは、少なくともこのメソッドから戻る前に呼び出されることはありません (場合によっては他のメソッドも同様です)。現在のイベント チェーンと現在のスタックで)。

于 2012-09-28T21:37:20.060 に答える