سؤال

هذا ليس سؤالًا بقدر ما يفكر في التفكير - لماذا يلقي nsnotificalcenter استثناء عند إصداره؟ ما زلت جديدًا على تطوير iPhone ، وبالتالي لا أعرف أحواض الكاكاو حتى الآن ، لذلك سيكون من الجيد أن نفهم السبب.

أنا أعين DefaultCenter إلى متغير ، والاتصال addobserver: المحدد: الاسم: كائن ثم إطلاق المتغير السابق ، ولكن الدعوة إلى إخطار الإصدار يعطل التطبيق. أنا لا أفعل أي شيء غريب في الكود ، لذلك سيكون من المثير للاهتمام معرفة سبب قيامه بذلك بالضبط.

أي شخص واجه هذه المشكلة؟

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

المحلول

من ما أعرفه عن nsnotifcation ، يجب ألا تقوم بتعيين الافتراضي إلى متغير بل تفعل شيئًا مثل:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showLogin) name:@"IncorrectLogin" object:nil];

في هذا المقتطف ، اتصل بالمركز الافتراضي وتسجيل الكائن الحالي لرسالة معينة.

ثم لنشر رسالة إلى مركز الإخطار ، يمكنك استخدامه:

[[NSNotificationCenter defaultCenter] postNotificationName:@"IncorrectLogin" object:nil];

أستخدم ما سبق في جميع التعليمات البرمجية الخاصة بي وليس لدي أي مشاكل معها.

نصائح أخرى

يجب أن يكون هناك مركز إشعار افتراضي واحد فقط لتطبيقك ، لذلك لا ينبغي لأي من فصولك الاحتفاظ بها أو إطلاقها. لا تريد أن يختفي مركز الإخطار الخاص بك ، أليس كذلك؟

لا أعتقد أنك تملك الكائن ، وبالتالي لا ينبغي إطلاقه.

تذكر NARC: NEW TILOC ، الاحتفاظ ، نسخ. إذا قمت بعمل واحد من هذه ، فيجب عليك إطلاقه.

ليس لك أن تصدر.

تذكر قاعدة NARC-أنت تطلق فقط الأشياء التي جلبتها إلى الوجود باستخدام:

تخصيص جديد ، أو نسخ.

نارك. نرى؟

ما تفعله مع NSNotificationCenter هو أنك تحصل على نسخة من المفرد الذي يمثل مركز الإخطار الافتراضي. سوف يستحق القراءة على المفردات.

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