저는 IOS에 익숙하지 않습니다. 루프에서 뷰를 그리는 데 문제가 있습니다. 이것은 MyView.m 클래스의 drawRect 메서드입니다. :반복에서 뷰를 그리는 방법, 무한 루프에 setNeedsDisplay 메서드를 추가 했으므로
`
-(void)drawRect:(CGRect)rect
{
self.backgroundColor = [UIColor blackColor];
x = rand() % (200 - 0) + 0;
y = rand() % (200 - 0) + 0;
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextBeginPath(context);
CGContextMoveToPoint(context, 0, 0);
CGContextAddLineToPoint(context, 160+x, 150+y);
CGContextAddLineToPoint(context, 160+x, 120+y);
CGContextAddLineToPoint(context, 200+x, 200+y);
CGContextAddLineToPoint(context, 200+x, 170+y);
CGContextAddLineToPoint(context, 250+x, 250+y);
CGContextClosePath(context);
[[UIColor whiteColor] setFill];
[[UIColor redColor] setStroke];
CGContextDrawPath(context, kCGPathFillStroke);
NSLog(@"drawRect x: %d,%d",x,y);
}
`
MYVIEW는 XIB의 하위 뷰로의 ViewController에 첨가된다.
viewController.m에서이 내 while 루프
:-(void)buttonClicked:(id)sender
{
while (TRUE) {
NSLog(@"while");
NSThread* myThread = [[NSThread alloc] initWithTarget:self selector:@selector(reDraw)object:nil];
[myThread start];
// [NSThread detachNewThreadSelector:@selector(reDraw) toTarget:self withObject:nil];
//[self performSelector:@selector(reDraw) withObject:nil afterDelay:1];
NSLog(@"after sleep");
}
}
-(void)reDraw {
[myView setNeedsDisplay];
}
은 buttonClicked 내가 루프 setNeedsDisplay 방법을 반복하는 동안 시작 버튼을 누를 때 호출되는 방법은, 문제는 내가 버튼을 누를 때 모든 것은 멈추고 드로잉을 받아들이게됩니다. 버튼이 클릭 된 상태로 유지되고 다른 모든 구성 요소가 중지됩니다.
iOS를 처음 사용하는 경우 왜 NSThread 메서드를 사용하려고합니까? 그'buttonClicked :'메소드는 끔찍합니다. – Abizern