-(void) test{
for(Person *person in persons){
__block CGPoint point;
dispatch_async(dispatch_get_main_queue(), ^{
point = [self.myview personToPoint:person];
});
usePoint(point); // take a long time to run
}
}
我需要personToPoint()
在主队列中运行才能明白这一点,并且usePoint()
方法不需要在主队列中运行并且需要很长时间才能运行。但是,在运行时usePoint(point)
,由于使用了 dispatch_async,因此尚未为 point 赋值。如果使用 dispatch_sync 方法,程序会被阻塞。分配后如何使用积分?
更新:如何实现以下代码的模式:
-(void) test{
NSMutableArray *points = [NSMutableArray array];
for(Person *person in persons){
__block CGPoint point;
dispatch_async(dispatch_get_main_queue(), ^{
point = [self.myview personToPoint:person];
[points addObject:point];
});
}
usePoint(points); // take a long time to run
}