2012-02-24 13 views
2

私はCocoaでaddoperationwithblockを使用して少し問題があります。私はマスター関数を持っているとしましょう。NSOperationQueueとブロックを使用しています

-(IBAction) callthisone { 

    // Call another function "slave" here and store returned value in result 

    result = return value from slave 
    NSLog(@" result is %@",result); 
}]; 

} 

-(NSArray *) slave { 

[operationQueue addOperationWithBlock: ^{ 

    NSString * result = @"5" ; 
    }]; 

return result; 
} 

結果値がマスターに返されることは決してありません。これはどうすればいいですか?私のアプローチは正しいのですか?おかげ

+0

もの*関数ではありません*、彼らは* *メソッドです。大きな違い。 –

答えて

0

Apple's documentation for addOperationWithBlockは言う:

パラメータ

ブロックは、操作対象から実行します。ブロックにはパラメータがなく、戻り値を持たない が必要です。

これらは自己完結型ブロック操作のためのものです。

キュー/スレッドからの入出庫に関して、より柔軟なやり方を試すことができますか?多分グランドセントラルディスパッチ(私はちょうどlooking at this threadだった)。

1

あなたはこのような何かしてみてください可能性があります

-(IBAction) callthisone { 
    [self slave: ^(NSString* result) { 
      NSLog(@" result is %@",result); 
     } 
    ]; 
} 


-(void)slave: (void(^)(NSString*)) callback { 
    [operationQueue addOperationWithBlock: ^{ 
      NSString* str = [NSString stringWithFormat: @"5]"; 
      callback(str); 
     } 
    ]; 
} 
関連する問題