سؤال

أنا حاليا باستخدام غير متزامن NSURLConnection مع عدة UIViews (كل مقابض عرض NSURLConnection كما مندوب). المشكلة التي لدي هو عندما يتحول المستخدم وجهات النظر بسرعة كبيرة ويصبح المندوب NSZombie تعطل التطبيق - وهذا هو NSurlConnection لم يعد من المفوض المعيشي. لذلك، السؤال الأول هو إذا كان هناك طريقة للتحايل على هذا؟

السؤال الثاني بسيط - كيف يمكنني التعامل مع Nszombie؟ بسيط if(myObject != nil).. لا يعمل على الإطلاق.

هل كانت مفيدة؟

المحلول

تحتاج إلغاء ال NSURLConnection قبل أن تتخلص من المفوض. ما عليك سوى الاحتفاظ بالمراجعة إلى NSurlConnection في UIView وهذا يعمل كمندوب وندع [urlConnection cancel].

بعد إصدار رسالة تحتاج إلى تعيين مؤشرك إلى NIL إذا استمرت في استخدام هذا المؤشر. كمثال:

id myObject = [[SomeObject alloc] init];

/* Some code */

[myObject release];
myObject = nil;

/* Some more code */

if (myObject != nil) {
   [myObject doSomething];
}

لاحظ أن الأمر صالح لإرسال رسالة إلى nil لذلك لا تحتاج إلى الحرس الآمن إرسال الرسائل. ببساطة لن يكون لها أي تأثير إذا myObject == nil.

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