2017-02-01 16 views
1

私のアプリケーションでは以下のクラッシュがありますが、そのソースを見つけるために再現できません。主な仕事は、複数の非同期ネットワークのアップロードの要求であり、の同時実行 OperationQueueにあり、の背景の移行も同様です。iOSのswiftを使用したCFNetworkクラッシュ

はクラッシュ:NSOperationQueue 0x174037ae0 :: NSOperation 0x17044f7b0(QOS:DEFAULT) EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000ce6fabec8

はクラッシュ:NSOperationQueue 0x170036660 :: NSOperation 0x17425e360(QOS:DEFAULT)

0 libobjc.A.dylib    0x181c21704 objc_object::release() + 8 
1 CFNetwork      0x1839a196c __destroy_helper_block_.465 + 40 
2 libsystem_blocks.dylib   0x1820afa28 _Block_release + 144 
3 Foundation      0x183c0623c -[NSBlockOperation dealloc] + 64 
4 Foundation      0x183cc245c __NSOQSchedule_f + 484 
5 libdispatch.dylib    0x18205a1bc _dispatch_client_callout + 16 
6 libdispatch.dylib    0x1820683dc _dispatch_queue_serial_drain + 928 
7 libdispatch.dylib    0x18205d9a4 _dispatch_queue_invoke + 652 
8 libdispatch.dylib    0x18206a34c _dispatch_root_queue_drain + 572 
9 libdispatch.dylib    0x18206a0ac _dispatch_worker_thread3 + 124 
10 libsystem_pthread.dylib  0x1822632a0 _pthread_wqthread + 1288 
11 libsystem_pthread.dylib  0x182262d8c start_wqthread + 4 

をアプリがで書かれていますスイフト3。あなたが提案できるものはありますか?

+0

このクラッシュが発生しているコーディングラインを教えてください。 –

+0

デバッグモードで私はそれを再現できないので、私はこのクラッシュを得ることができません。私はファブリック(クラッシュのコーディングラインは含まれていません)からこのレポートを受け取り、特定の場所を見るためにいくつかの助けを得ることを望んでいました。 – nick3389

答えて

1

サードパーティのライブラリを更新することで、まったく同じクラッシュログが解決されました。そのライブラリの問題は、ブロックオブジェクトを(コピー)の代わりに(強く、非原子的な)ものとして定義していました。これはObjective-Cライブラリでしたが、Swiftブロックオブジェクトのプロパティにも同じ強弱原理が適用されます。これらのブロックがNSOperationQueueに追加された場合、そのエラーが表示されます。 NSOperationQueuesに強いブロックプロパティや強い参照がありますか?

+0

私は操作中に強い参照(ブロックではない)を持っていますが、操作を取り消したり終了したりしてもアクセスしないようにしています。私の問題は、以前に実装した人に同じ操作のための2人の代理人がいたということです。彼がURLSessionを作成したとき、彼は自分をデリゲート(操作自体)として設定し、セッションがバックグラウンドで継続されていた場合、handleEventsForBackgroundURLSessionのcompletionHandlerを別のカスタムデリゲートに追加しました。だから2人の代表者が時々一緒に走って、争いがあったかもしれない。私は今1人のカスタムデリゲートでそれをやりました。私は待っています... – nick3389

関連する問題