2012-10-11 4 views
38

私はIOS 5でxmppframeworkを使ってチャットアプリケーションを開発しています。それは完全に動作します。しかし、私は自分のxcodeを4.5.1、ios5をIOS6、そしてMac OSを10.7.5にアップデートしました。このプロジェクトは廃止された問題のために動作しませんでした。すべてのメソッドをios 6の新しいメソッドに置き換えます。iphoneのios5からios6への廃止予定のメソッドdispatch_get_current_queue()を置き換えるにはどうすればよいですか?

dispatch_get_current_queue() 

このメソッドをIOS 6ではどのように置き換えることができますか?

+0

'dispatch_get_current_queue'は非推奨です。どのようなエラーや警告が表示されますか? –

+1

@NoahWitherspoon __OSX_AVAILABLE_BUT_DEPRECATED(__ MAC_10_6、__ MAC_NA、__ IPHONE_4_0、__ IPHONE_6_0) 6.0でのサポートが終了したことを意味します。 –

+3

Huh。そうです。私は間違ったドキュメントを見ていたと思います。 –

答えて

4

これは、この呼び出しで何を達成する必要があるかによって異なります。
Appleは、とにかくデバッグに使用するべきだと述べています。

おそらく、キューは問題では(あなただけのバックグラウンドキューを必要として)ので、あなたは、コードのいくつかの作品を実行する必要がない場合は、特定の優先順位(dispatch_get_global_queue(dispatch_queue_priority_t priority, unsigned long flags);

OR、

でグローバルキューを取得していません同じキュー内でキューを作成し、保持し、そこですべてのタスクをディスパッチします。

2

NSOperationQueueはどうですか?

-(void) doSomeThing:(void (^)(BOOL success)) completionHandler 
{ 
    NSOperationQueue* callbackQueue = [NSOperationQueue currentQueue]; 
    if(!callbackQueue) { 
     callbackQueue = [NSOperationQueue mainQueue]; 
    } 
    dispatch_async(...,^{ 
     // do heavyweight stuff here 
     // then call completionHandler 
     if(completionHandler) { 
      [callbackQueue addOperationWithBlock:^{ 
       completionHandler(...); 
      }]; 
     } 
    }); 
+0

私は分かりませんこれは、作業の最後の部分をキューの末尾に追加するだけなので、移動する方法です。あなたのキューに最大並列処理が1つあり、そのキューに20個の操作がある場合はどうなりますか? – horseshoe7

関連する問題