このようなことはネイティブにはありません。おそらくネットワークオブジェクトのキューを管理する独自のクラスを作成する必要があります。 (そして、あなたはobjects
配列から最上位オブジェクトをポップして返すようにgetNextChunk
を実装し、[objects count]
が一定値未満であれば、いくつかのより多くのオブジェクトをフェッチするスレッドを起動することができ
@interface ObjcBlockingQueue : NSObject {
// The objects that you're holding onto
NSArray *objects;
}
@property(nonatomic,retain) NSArray *objects;
- (ServerData *)getNextChunk;
:あなたのヘッダーは次のようになりますおそらくObjcBlockingQueueがデリゲートであるNSURLConnectionを使用しています)。キューを事前に埋め込むために、オーバーライドされたinit
メソッドの中で起動されたそのスレッド/接続を持つこともできます。
また、あなたの表示スレッドは、それがすぐに何か新しいものを表示することができますか、それはロードメッセージを表示する必要がある場合かどうかをお知らせします
- (BOOL)isChunkAvailable;
メソッドを追加することについて考えたいかもしれません。データを表示する場所やアプリケーションの構造によっては、ObjcBlockingQueueをシングルトンクラスにする価値があります。
出典
2009-08-05 23:52:14
Tim
Dave Dribinのブログへのリンクを投稿してくれてありがとう。それは私の人生を救った。バックグラウンドスレッドに留まるために非同期メソッドのアイドルループを実行していました。 – Ben