سؤال

أحتاج إلى إرسال كميات كبيرة من البيانات (ملفات الصور) عن طريق النشر في أ 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. كمكافأة ، أحصل على تحديثات تقدم أفضل بكثير بهذه الطريقة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top