قد لا يستجيب مركز NSNotification لـ -Object؟
-
27-09-2019 - |
سؤال
أحاول الاستفادة البسيطة لمركز NSNotification داخل تطبيق iPhone الخاص بي ، لكن يبدو أنني أفعل شيئًا خاطئًا في هذه الحالة. كنت تحت الانطباع بأنه كان من الممكن استرداد كائن مرتبط برسالة معينة ، أو على الأقل إشارة إلى الكائن ، ولكن باستخدام رمز المثال التالي ، أحصل على تحذير ،
"قد لا يستجيب مركز NSNotification لـ -Object"
- (void)addNewBookmark:(NSNotificationCenter *)notification {
Bookmark *newBookMark = (Bookmark *)[notification object];
//Do some stuff with the bookmark object
}
في الواقع ، عندما أقوم بتجميع الكود وتشغيله ، لا يوجد شيء أحاول فعله مع محتويات الكائن فعليًا - يتم تجاهله ببساطة.
رمز البريد كما يلي ،
- (IBAction)save:(id) sender{
//Sending the message with the related object
[[NSNotificationCenter defaultCenter]
postNotificationName:@"addNewBookmark"
object:bookmark];
}
والكائن المرجعية نفسه هو مجرد قاموس. لقد حاولت أيضًا استخدام وسيطة "userinfo" وتمرير الكائن المرجعية من خلال ذلك ، لكن النتيجة كانت هي نفسها.
كيف أفعل هذا؟ ما الخطأ الذي افعله؟
المحلول
لك addNewBookmark:
يجب أن تقبل الطريقة تقليل nsnotification ، وليس nsnotificalcenter.
يجب أن يستجيب NSNotification -object
كما هو متوقع.
مركز الإخطار هو الكائن المسؤول عن تتبع من يستمع وإرسال الإخطارات (وليس المراكز) لهم.