1

私は奇妙な問題に直面していますdispatch_async

私は 2 つの別個のプロジェクトを持っています。1 つはフレームワークを構築するためのもので、もう 1 つは何らかの目的でそのフレームワークを使用するためのものです。

私は非常に単純なコードを実行しようとしています (追加のコードもありません):

dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

    dispatch_async(dispatch_get_main_queue(), ^{

    });
}); 

したがって、これdispatch_asyncをプロジェクトに配置すると完璧に機能します
が、フレームワークプロジェクトのメソッドに配置してビルドし
、そのフレームワークを使用しているプロジェクトからそのメソッドを呼び出すと、スタックの最初の行でエラーが発生し
ますEXC_BAD_ACCESSdispatch_asyncobjc_retainAutoreleasedReturnValue

これはキューdispatch_asyncでのみ機能しますがdispatch_get_main_queue()

優先度の異なるさまざまなキューを作成しようとしましたが、静的キューを試してみ
ましたが、実際には作成されますが、dispatch_async毎回クラッシュします

これは私のフレームワーク プロジェクトのビルド設定のいくつかのフラグに関連する問題だと思いますが
、残念ながら何が役立つかを見つけることができません。

更新:
これはシミュレーターでは完全に機能しますが、デバイスでは機能しないことを忘れていました

そして、これが私のコードの例です:

[[SingleTonOfFramework sharedInstance] executeRequest:@"SomeRequest"
                                              success:^(id response) {
                                                  NSLog(@"works");
                                              }];

SingleTonOfFramework - 私のフレームワークからのクラスで
あり、これはそれが何をするかです:

- (void) executeRequest:(id) request success:(void (^)(id response))success {

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        dispatch_async(dispatch_get_main_queue(), ^{

            success(@"COOL!");

        });

    });
}
4

0 に答える 0