كيفية التعامل مع Nszombies في nsurlconnection غير متزامن؟
-
13-09-2019 - |
سؤال
أنا حاليا باستخدام غير متزامن 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
.