سؤال

أنا أستخدم التعليمات البرمجية التالية لأداء محدد بعد تأخير مع عدة معلمات مرت:

http://nifty-box.com/blog/2006/12/nsinvocation-cleans-code.html.html.

إنه يعمل بشكل جيد للغاية، لكنني بحاجة إلى تمديد هذا لدعم ما يعادل:

nsobject cancelprevienperformrequestswithtarget: الذات

(الهدف في هذه الحالة لن يكون ذاتيا، ولكن سيكون مثالا ل _uflatePerformer وأعتقد)

هل هناك أي طريقة للقيام بذلك، لذلك يمكن لك فحص رأيي أن يقتل جميع طلبات الأداء المتأخرة المتبقية؟

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

المحلول

على جهاز Mac، ستتمكن من استخدام OBJC_SETASSOCITITYOBJECS، ولكن هذا غير موجود على iPhone.

لذلك تحتاج أساسا إلى نوع من المدير المفرد الذي يحتفظ بهذه المراجع لك أنك تمر في nsobject وفعل ما تريد.

عندما كنت أفعل شيئا مشابها، كتبت فئة Singleton التي استغرقت طلبات أداء إجراء، وبدأت مؤقتا أطلقت عند إجراء الإجراء - في ذلك الوقت قرر فئة مديري إذا كان الطلب المعني لا يزال ساري المفعول، وإذا كان الأمر كذلك أطلقت الإجراء. وبالتالي، يمكن أن ألغه بفعالية مؤقتا، وعلاوة على ذلك، يمكن أن يخبر المدير بإعادة تعيين الموقت الذي لم يكن حقا، لقد جعلت مؤقتا جديدا، لكن عندما أطلق الموقت القديم الإجراء الذي طلب من ذلك أنه غير صالح.

لذلك في الأساس، كان الموقت يدعو Singleton مرة أخرى مع معرف طلب فقط، مما أدى إلى إدخال القاموس يحتوي على تفاصيل المكالمة.

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