1

私はiOS開発のスレッドが初めてです。ここで質問があり、次のコードを検討してください

   [activityIndicator startAnimating];
   [self startAnewOperationInSepThread];
   [self startAnotherOperationInSepThread];

ここでの私の理解は、最初の行が実行されると、メインスレッドでアクティビティインジケーターが開始されるということです。そのため、メイン スレッドがアクティビティ インジケーターの実行を担当します。後続のオペレーションがどのように呼び出されるか。

4

4 に答える 4

0

はい、[activityIndi​​cator startAnimating] を呼び出します。メインスレッドから、それはアニメーションを開始するための単なる呼び出しです. 実際のアニメーションは別のスレッドで行われます。

アクティビティ インジケータはまだアニメーションですが、メイン スレッドで何もできないわけではありません。彼の義務 (startAnimating メソッドの呼び出し) が終わったからです。

activityIndi​​cator で startAnimating を呼び出した後、次の行にジャンプして [self myMethod1]; を実行します。次に [self myMethod2]; 次のコードの場合。

複雑にしないで、これはシンプルです

   [activityIndicator startAnimating];
   [self myMethod1];
   [self myMethod2];
于 2013-05-04T06:18:45.203 に答える
0

あなたはそれのためのオプションを持っています

1.> 2 つのメソッドの両方を異なるスレッドで実行できます。

 [NSThread detachNewThreadSelector:@selector(startAnewOperationInSepThread) toTarget:self withObject:nil];

 [NSThread detachNewThreadSelector:@selector(startAnotherOperationInSepThread) toTarget:self withObject:nil];

また

2.> スレッドが完了した後に別のスレッドを開始したい場合は、最初に startAnewOperationInSepThread メソッドを呼び出し、その定義内で startAnotherOperationInSepThread を呼び出します

-(void)startAnotherOperationInSepThread
{
    [self startAnotherOperationInSepThread];
}

それでも問題が発生する場合はお知らせください。ありがとう

于 2013-05-04T06:24:49.007 に答える