1

検証を行う必要があります。そのためには、タスクがまだ実行されているかどうかを知る必要があります。このコードを使用してタスクを起動します

    ` SerialQueue = dispatch_queue_create("miColaEnSerie", NULL);
       dispatch_async(SerialQueue, ^{
    [self loadImageFriend:init finalWhitNumber:final img1WithArray:infoImages1 img2WithArray:infoImages2 img3WithArray:infoImages3];
    });`
4

1 に答える 1

3

SerialQueue に一度に 1 つのタスクしかない場合は、次のようなクラスにアトミック プロパティを追加できます。

@property (assign) BOOL isSerialQueueRunning;

それで:

 isSerialQueueRunning = YES;
 dispatch_async(SerialQueue, ^{
    [self loadImageFriend:init finalWhitNumber:final img1WithArray:infoImages1 img2WithArray:infoImages2 img3WithArray:infoImages3];
    isSerialQueueRunning= NO;
 });

ただし、SerialQueue に追加するタスクがさらにある場合は、それに応じて変更BOOL isSerialQueueRunningNSInteger serialQueueTasks、インクリメント/デクリメントすることができます。次に、現在キューに何もないことを意味する 0 かどうかを確認します。

通知を実装して、タスクが完了したときに情報を取得し、その後何らかのアクションを実行する方がよい場合があります。

于 2012-10-23T14:58:31.970 に答える