У меня есть другое решение, которое использует GCD Serial Queues и метод NSSelectorFromString
.
1-й: Создать массив с именами методов
2-й: Создать последовательную очередь GCD
3-й: Используя NSSelectorFromString, преобразовать строку имени метода в метод и вставить ее впоследовательный Q с использованием цикла a и т. д.
Вот полный проверенный код:
- (IBAction)buttonSerialQPressed:(id)sender
{
dispatch_queue_t serialdQueue;
serialdQueue = dispatch_queue_create("com.mydomain.testbed.serialQ", NULL);
NSArray *arrayMethods = [NSArray arrayWithObjects:@"method1", @"method2", @"method3", nil];
for (NSString *methodName in arrayMethods)
{
dispatch_async(serialdQueue, ^{
SEL myMethod = NSSelectorFromString(methodName);
[self performSelector:myMethod];
});
}
}
-(void)method1
{
for (int i=0; i<1000; i++)
{
NSLog(@"method1 i: %i", i);
}
}
-(void)method2
{
for (int i=0; i<10; i++)
{
NSLog(@"method2 i: %i", i);
}
}
-(void)method3
{
for (int i=0; i<100; i++)
{
NSLog(@"method3 i: %i", i);
}
}