3

にたくさん追加したいのですがNSBlockOperationsmainQueue潜在的に呼び出したいのです[mainQueue cancelAllOperations];が、クラスメソッドには、mainQueue追加できる操作しかありませんか、それともシステムが独自の操作を追加しますか?

4

1 に答える 1

2

まあ、ドキュメンテーションにはどちらか一方しか書かれていませんが、アップルの誰かが絶対的な言葉であなたに言うことができれば、私は非常に驚くでしょう. そうではないと思いますが、これを自分で判断する方法について提案があります。

現在のアプリでは、「- (void)setSuspended:YES;」を送信します。mainQueue に追加し、dispatch_after ブロックを dispatch_main_queue に追加し、mainQueue の operationCount をログに記録します。実際、起動時に appDelegate で一時停止し、カウントを出力するボタンを提供して、実際にアプリを実行できるようにすることができます。UIKit フレームワークのいずれかがそれを使用している場合、私は非常に驚かれることでしょう。

私のiOSアプリで試してみましたが、何も見つかりませんでした:

// in one place
[((NSOperationQueue *)[NSOperationQueue mainQueue]) setSuspended:YES];
// Eons later
NSLog(@"[NSOperationQueue mainQueue] %d", ((NSOperationQueue *)[NSOperationQueue mainQueue]).operationCount);

値は 0 でした。

于 2012-07-16T16:00:34.197 に答える