안녕 Objective C의 대기열에서 함수와 메서드를 시작하는 방법은 무엇입니까? 다음과 같은 의미입니다.단계별 실행 방법
방법 1 다음 방법 2, 방법 3, NSThread
을 사용해야합니까?
안녕 Objective C의 대기열에서 함수와 메서드를 시작하는 방법은 무엇입니까? 다음과 같은 의미입니다.단계별 실행 방법
방법 1 다음 방법 2, 방법 3, NSThread
을 사용해야합니까?
GCD 직렬 대기열과 NSSelectorFromString
방법을 사용하는 것과 관련된 다른 해결책이 있습니다.
1 : 당신의 방법과 배열을 만들기 이름
2하십시오 GCD 직렬 큐를 작성
3 : NSSelectorFromString이 방법에 메소드 이름 문자열을 변환하고 A의를 사용하여 시리얼 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을 사용하여 메서드 호출에서 작업을 만들 수 있습니다.
당신이 방법 항목 등, 방법 2를 호출하기 전에 끝날 때까지 기다릴 필요합니까이? – user523234
@ user523234 : 예를 들면 다음과 같습니다. –