-(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. При использовании метода 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
}