0

私はインターネットを見てきましたが、iOS でスレッド化するための完璧なチュートリアルを見つけることができませんでした。現在、私は iOS 5 に取り組んでいます。ウェブで見つかったチュートリアルは古いものでした。スレッドでの操作、私はタブバーを持っています。各タブでは、データのフェッチを開始すると、Web からさまざまな種類のデータが読み込まれます。アプリがそのタブでスタックしたくないので、その間にユーザーが他のタブに移動できるようにしたいそのタブのデータをフェッチします。どうすれば可能ですか

編集:フローが必要です:

 //in a thread
 fetchDataFromWeb(){//during this call activity indicator
 //fetch and make an array of ojbects     
 }

データが読み込まれると、入力機能がトリガーされます

laoddata(){//remove activity indicator
//load tableview and other views
}

スレッドがプロセスを終了したことを確認する方法

4

1 に答える 1

1

NSOperationNSThread 、またはGrandCentralDispatchをご覧ください

編集:NSThreadの例

//on main thread on some action
 NSDictionary *myParameterDitionary = [..];
 [NSThread detachNewThreadSelector:@selector(aBackThreadMethod:) toTarget:self withObject:myParameterDitionary];

//this is on back thread called
- (void)aBackThreadMethod:(NSDictionary *)variablesDictionary{
    @autoreleasepool {
        //presess data
        NSDictionary *responseDictionary = [..];
        [self performSelectorOnMainThread:@selector(didABackThreadMethod:) withObject:responseDictionary waitUntilDone:YES];
    }
}

//call back on main thread
- (void)didFinishABackThreadMethod:(NSDictionary *)responseDictionary{
   //do stuff ex update views
}

@autoreleasepoolはARC用です。手動のメモリ管理を使用する場合は、次のことを行う必要があります。

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[pool release];
于 2012-09-21T05:48:49.007 に答える