كيف يمكنني تحديث مؤامرة الأساسية دون عودته من طريقة؟
-
22-07-2019 - |
سؤال
ولدي واجهة الكاكاو يستخدم مؤامرة الأساسية. عند الضغط على زر في الواجهة، ويوجه مؤامرة. أردت أن تخلق سلسلة من الرسوم البيانية بواسطة استدعاء الأسلوب التآمر عدة مرات مكالمات للنوم () بينهما. ولكن يبدو أنه على الرغم من هذه الدعوة لإعادة تحميل البيانات التي لا يحدث أي شيء حتى إنهاء وظيفة (يظهر فقط الرسم البياني الماضي أيضا). الآن وأنا أعلم أن CPAnimation موجود ولكن قبل أن أبدأ استخدامه وكنت أتساءل ما هو عليه ما يحدث عندما يتم إنهاء وظيفة التي تجعل التحديث الرسم البياني. وأود أن يكون الاستسلام لمؤشر الترابط الذي يعتني منعش بدلا من استخدام النوم؟
المحلول
طيب أنا أحسب كيف. I استدعاء الأسلوب reloadData من أسلوب في موضوع مستقل (والتي ترجع دائما). المغلي هذا وصولا الى الدعوة reloadData من IBAction وأيضا مع NSTimer. وأخيرا بدلا من استخدام النوم وسوف تستخدم NSConditionLock تنسيق تجهيز ومنعش
نصائح أخرى
ويفترض، مؤامرة الأساسية (أو التعليمات البرمجية) يحدد طريقة العرض كما تحتاج إلى الشاشة. وهذا لا يحدث على الفور. يحدث عند العودة إلى حلقة الحدث.
وكلما كنت تستخدم sleep
في تطبيق ماك OS X، يمكنك قتل جرو. استخدام NSTimer بدلا من ذلك. يكون لديك طريقة توقيت رد قيام بالعمل المطلوب لرسم بياني واحد، ووضع كل ما المثال المتغيرات الضرورية لديك طريقة لمعرفة أي الرسم البياني ينبغي رسم، بحيث يرسم طريقة كل رسم بياني بدوره حتى نفدت منها.
وأو الأفضل من ذلك، تقديم قائمة من الرسوم البيانية التي يمكن للمستخدم الاختيار من بينها، بدلا من جعل مستخدم مشاهدة جميع الرسوم البيانية كما عرض الشرائح. (إلا لعرض الشرائح وصفت صراحة، هو ما كنت المنفذة.)
وكور الأرض، مثل معظم الأطر الكاكاو الرسم، هو كسول: أنه توجه في نهاية التكرار المدى الحلقة. هذا هو التأكد من أن الأمور لم يتم رسمها كثير من الأحيان.
وبدلا من الاعتماد على الفور، ويتم وضع علامة على طبقات كما تحتاج إلى الرسم.
وكما أشير من قبل الآخرين، وهو النهج الأفضل أن النوم هو استخدام NSTimer لتجنب عرقلة حلقة المدى، أو استخدام أساليب NSObject مثل performSelector: withObject: afterDelay:
وبيتر كانت عليه بزر الماوس الأيمن على طريقة البيانات تحديث لا تعتمد في الواقع شيئا. يتم وضع علامة على المؤامرة التي تحتاج إلى عرض وتحديثها في المرة القادمة يتم رسم الطبقات على الشاشة. إذا كنت تستخدم sleep
، فإنه لم يحصل على فرصة لرسم.
ونلاحظ أيضا أن كور المؤامرة هي مشروع الشباب إلى حد ما. CPAnimation
وفئات ذات الصلة هي بذرة. انهم لا حقا أي شيء حتى الآن. : -)