سؤال

أحاول الاستفادة البسيطة لمركز 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 كما هو متوقع.

مركز الإخطار هو الكائن المسؤول عن تتبع من يستمع وإرسال الإخطارات (وليس المراكز) لهم.

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