NSOperationQueue と NSInvocationOperation を使用して簡単な例を実行しようとしています。これが私のコードです:
- (void) runMethodsViaOperationQueue {
NSOperationQueue *thisQueue = [[NSOperationQueue alloc] init];
NSInvocationOperation *logMethod1Invocation = [[NSInvocationOperation alloc]
initWithTarget:self
selector:@selector(logMethod1)
object:nil];
[thisQueue addOperation:logMethod1Invocation];
}
logMethod1 は、次のようにループされた NSLog ステートメントです。
- (void) logMethod1 {
for (int a = 0; a < 10; a++) {
NSLog(@"%s --> logMethod1: %i", __FUNCTION__, a);
if (a == 9) {
NSLog(@"%s --> ==================", __FUNCTION__);
}
}
}
クラスは、runMethodsViaOperationQueue が呼び出されるメインでインスタンス化されます。
MyOperationTestingClass *instantiateIt = [[MyOperationTestingClass alloc] init];
[instantiateIt runMethodsViaOperationQueue];
問題は、runMethodsViaOperationQueue が何も実行しない場合、NSLog 経由で期待どおりの出力が得られないことです。これが機能しない理由を明確にするのを手伝ってくれる人はいますか?