1

変数を作成し、これを子ブロックに渡したい最上位ブロックがあります。

最上位ブロックで作成する配列に保持を追加する必要がありますか? あるデータを作成して別のデータに渡すので、これはスレッドセーフですか?

dispatch_async(myCustomQ, ^{

 NSMutableArray *myArray = [NSMutableArray array];

 // add things to myArray here

 dispatch_async(dispatch_get_main_queue(), ^{
   [[NSNotificationCenter defaultCenter] postNotificationName:@"aMessageToSend"      
        object:myArray];
 });
});
4

1 に答える 1

2

myArray2 番目のブロックがを介してキューに入れられた後に変更しない限り、dispatch_async()そのコードは正しく、スレッド セーフでもあります。

myCustomQの暗黙の自動解放プールに依存していることに注意してください。そのブロックを自動解放プールで囲むことをお勧めします (最初に作成し、メイン キュー ブロックのエンキュー後に最後に排出します)。

于 2011-02-23T03:29:35.957 に答える