nsmutableurlrequest: نشر كميات كبيرة من البيانات
-
29-09-2019 - |
سؤال
أحتاج إلى إرسال كميات كبيرة من البيانات (ملفات الصور) عن طريق النشر في أ WebView
, ، لذلك أنا أستخدم NSMutableURLRequest
مع setHTTPBody:
.
المشكلة: إذا كان حجم البيانات أكثر من حوالي 3 ميغابايت ، يبدأ التطبيق فجأة في تناول كميات هائلة من الذاكرة ويصبح بطيئًا مع كل الترحيل.
لقد حاولت تغيير هذا:
[request setHTTPBody:[NSData dataWithBytes:post.Get() length:post.Size()]];
..الى هذا:
[request setHTTPBodyStream:[NSInputStream inputStreamWithData:
[NSData dataWithBytes:post.Get() length:post.Size()]]];
.. ولكن بعد ذلك يبدو أن لا شيء يحدث والطلب فقط في الخارج. أحصل على أي من عمليات الاسترجاعات العادية (مثل WebViewProgressEstimateChangedNotification
) ولا يبدو أن البيانات يتم تعيينها.
لذا ، كيف أقوم (أ) بعمل NSData
النهج لا يكون خنزير الذاكرة أو (ب) جعل نهج الدفق يعمل (على افتراض أنه حل جيد)؟
المحلول
انتهى بي الأمر باستخدامه باستخدام NSURLConnection
للقيام بالتحميل يدويًا ، ثم إطعام النتيجة في WebView
. كمكافأة ، أحصل على تحديثات تقدم أفضل بكثير بهذه الطريقة.