AFNetworking Error Domain= NSPOSIXErrorDomain Code= 12 "操作を完了できませんでした。メモリを割り当てることができません
-
28-10-2019 - |
質問
AfNetworking経由でRailsサーバーに大量の画像ファイルを送信しています。エッジで、場合によっては3Gで、次のエラーが発生します:Error Domain= NSPOSIXErrorDomain Code= 12 "操作を完了できませんでした。メモリを割り当てることができません"。
これは、ファイルの送信に使用しているコードです: https://gist.github.com/cc5482059ae3023bdf50
これを修正する方法はありますか?
オンラインでは、回避策はファイルをストリーミングすることであると提案する人もいます。AFNetworkingを使用した複数のファイルのストリーミングに関するチュートリアルを見つけることができませんでした。どうすればこれを行うことができますか?
解決
画像の大きさはどれくらいですか?そして、いくつ送信しようとしていますか?
NSInputStream
を使用してAFNetworking
を実装する簡単な方法を見つけることができないようですが、オートリリースプールに大きなオブジェクトを配置しないようにすることをお勧めします。大きなNSDataインスタンスを作成してforループを作成し、それらが自動解放プールに送られる場合、ループが続く限り、そのすべてのメモリが残ります。これはそれを最適化する1つの方法です:
ジェネラコディセタグプレ
または、LLVM3を使用している場合: ジェネラコディセタグプレ
他のヒント
この質問が出されてからしばらく経ちましたが、この件について2セントを差し上げなければなりません。
1週間の大部分を費やしてこのことを理解しようとした後、私は今ここにいます:
- この問題は、iOS5.1.1を実行している少し強打された古いiPhone4で発生します
- 同じiOS5.1.1を実行しているiPhone4Sでそれを再現できないようです
電話ハードウェア自体によるネットワークの障害が原因であるか、帯域幅を調整する必要がある(またはNSURLConnectionのバグ)ことが原因である可能性があります:
http://aws.amazon.com/articles/0006282245644577
https://forums.dropbox.com/topic.php?id=25351
POSIXエラー12( " iPhoneからファイルをアップロードしているときにメモリを割り当てることができません」)
ASIHTTPRequestに移動したはずですが、メンテナンスされなくなったため、実装する価値があります。たぶん私はまだAFNetworkingを試すべきですが、これはiOSですでに修正されている問題だと本当に思い始めています(または私の場合は見苦しいiPhoneかもしれません)。
しかし、私は一生の間、これについて簡単な説明を見つけることができません。