, 내가 가지고있는 NSArray 저장 blocks
그 예를 들어,있는 UIView에 뭔가를 그리기 :CGContext를 블록으로 그릴 수 있습니까?
^(CGContextRef ctx) {
// drawing rectangle
CGRect rect = CGRectMake(0, 0, 300, 300);
CGContextSetRGBFillColor(ctx, 1, 0, 0, 1);
CGContextFillRect(ctx, rect);
CGContextStrokeRect(ctx, rect);
};
가 배열에 저장된 여러 블록, 그리고 내가 drawRect
가 불려 갔을 때 그 블록이 sequently 실행 기대, 여기 내 drawRect
- (void)drawRect:(CGRect)rect {
// execute blocks
for(NSDictionary * task in drawTaskQueue)
{
DrawTaskBlock block = [task objectForKey:@"block"];
block(args, UIGraphicsGetCurrentContext());
}
}
있어하지만이 코드를 실행하면, 나는 블록이 에러없이 실행있어 확신 해요,하지만 아무것도 게재되지 않습니다. 내가 뭔가를 놓친 건가?
'DrawTaskBlock'은 어떻게 정의되어 있습니까? – dasblinkenlight
블록이 백그라운드 스레드에서 실행 중이며 메인 스레드에서 실행하려고 시도한 것으로 보입니다. UI 업데이트를 허용하는 유일한 스레드입니다. – azimov
@azimov 호출은'drawRect'에서 오는 것이므로 올바른 스레드에 있습니다. – dasblinkenlight