Привет, как я могу запускать функции и методы в очереди в Objective C? Я имею в виду примерно так:Пошаговые методы шаг за шагом
метод 1, затем метод 2, затем метод 3, следует ли использовать NSThread
?
Привет, как я могу запускать функции и методы в очереди в Objective C? Я имею в виду примерно так:Пошаговые методы шаг за шагом
метод 1, затем метод 2, затем метод 3, следует ли использовать NSThread
?
У меня есть другое решение, которое связано с использованием последовательных очередей GCD и метода NSSelectorFromString
.
1-й: Создание массива с вашими методами имена
вторые: Создание последовательной очереди НОДА
третьи: Использование NSSelectorFromString для преобразования имени методы строки методы и вставить его в последовательный Q с помощью а, для петли и т.д.
Вот полный код испытания:
- (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);
}
}
Один из способов - использовать указатели функций Queue
или Stack
, затем выполнить и выставить самый верхний метод до тех пор, пока не останется никаких методов. Очевидно, вы можете сделать это с помощью массива и переменной currentIndex
(приращение currentIndex
от 0
до arraySize - 1
, выполняя указатель функции на myArray[currentIndex]
каждый раз). См. Function Pointers in Objective C для получения дополнительной информации о самих указателях функций.
Я использовал бы NSOperationQueue. Вы можете настроить его для запуска одной операции за раз, и в этом случае она будет продолжать шаг за шагом через вызовы методов, которые вы хотите. Вы можете использовать NSInvocationOperation для создания операций из вызовов методов.
вам нужно ждать method1 закончить перед вызовом method2 и т.д. ли? – user523234
@ user523234: да что-то вроде этого –