1

ABAddressBookRef1 つのスレッドからのみアクセスできます。ABAddressBookRef良いモデルは、メイン スレッドのほかに、バックグラウンドでスレッドを持つことだと思います。

使用中にスレッドが 1 つだけであることを確認するにはどうすればよいNSOperationQueueですか? 最大同時実行数を 1 に設定するだけでは、同じスレッドで実行されるとは限りません。

Web スレッドなど、他の固有のスレッドを使用する必要がありますか?

4

1 に答える 1

1

手動でスレッドを作成し、すべてのアドレス帳アクセスをそのスレッドにリダイレクトできます。

次のようなスレッドを作成します(ドキュメントから適応):

NSThread* myThread = [[NSThread alloc] initWithTarget:[MyThread new]
                                    selector:@selector(myThreadMainMethod)
                                    object:nil];
[myThread start];  // Actually create the thread

スレッドを有効にするには、スレッドのメイン メソッドに実行ループを実装する必要があることに注意してください。

この回答の実行ループの実装例を参照してください

その後、 's メソッドを使用して、このスレッドで何かを行うことができます。NSObjectperformSelector:onThread:withObject:waitUntilDone:

ABAddressBookRefこの概念を実装するためのラッパー ライブラリであるRHAddressBookを次に示します。

于 2013-11-26T23:03:23.220 に答える