سؤال

لم أكن أعرف حقا كيفية العنوان هذا السؤال، لكن إليك أي شيء يقتلني حقا: في تطبيقي لدي ayabersview و UIENTICTESTCORTOLTROL و UINAVARBAR. بمجرد أن يحصل UiseutionEdcontrol على إحدى شرائحه المختارة، أرغب في إظهار uiactiveInverIndicatorView على سطح UINAV، ثم تحليل ملف XML وتقديم النتائج في جدول. كل شيء يعمل تقريبا كما أريد ذلك، باستثناء شيء واحد، يتم إضافة عرض مؤشر النشاط إلى UINAVIORBAR بعد انتهاء المحلل المحلل، على الرغم من أن عملية التحميل التي يضيفها الطريقة التي تضيفها uiindicatorView إلى UINAVIORBAR يحصل قبل تهيئة المحلل فيها. هل يمكن لأي شخص أن يفسر ذلك؟ هل هناك شيء قد أكون في عداد المفقودين؟ ربما تحتاج واجهة المستخدم إلى إعادة رسمها؟ شكرا بطرس

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

المحلول

يبدو أنك تحليل XML الخاص بك في الخيط الرئيسي، وبالتالي يصبح محظورا لتغييرات UI. حاول نقل تحليل XML إلى موضوع منفصل (على سبيل المثال عن طريق استدعاء طريقة تحليلك عبر -performSelectorInBackground:)

يحرر: في الواقع أنت (بالتأكيد تقريبا) باستخدام autorelease ضمنيا في التطبيق الخاص بك - حيث عودة العديد من الوظائف القياسية كائنات Autoreloed. عند تشغيل وظائفك على موضوع منفصل تحتاج إلى إنشاء NSAutoreleasePool الاعتراض هناك للتعامل مع الأجسام autorelosed وتجنب تسرب الذاكرة (انظر autorelease تجمعات في مستندات). لذلك يجب أن تبدو دالة PARSEXML الخاصة بك:

- (void)parseXML{
   NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
   ... //xml parsing routines etc
   [pool release];
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top