#objective-c #object #notifications #sender
#objective-c #объект #уведомления #отправитель
Вопрос:
Кажется, я не могу понять, как опубликовать уведомление с объектом и отправителем.
Я могу опубликовать уведомление с именем, информацией об отправителе и пользователе. Смотрите:
- (void)postNotificationName:(NSString *)notificationName
object:(id)notificationSender
userInfo:(NSDictionary *)userInfo
И я могу опубликовать NSNotification с объектом, но не связать с ним отправителя:
NSNotification *notification = [NSNotification notificationWithName:name
object:someObject];
[[NSNotificationCenter defaultCenter] postNotification:notification];
Кто-нибудь может сказать мне, как опубликовать уведомление с (а) объектом и (б) ссылкой на отправителя?
Ответ №1:
В обоих предлагаемых вами методах object
переменная представляет отправителя уведомления, которым может быть все, что вы действительно хотите. Чтобы предоставить дополнительные объекты с уведомлением, вы могли бы передать словарь со своими объектами в userInfo
.
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
someObject, @"someObject",
anotherObject, @"anotherObject", nil];
[[NSNotificationCenter defaultCenter] postNotificationName:name
object:sender
userInfo:options];
Комментарии:
1. Я думал об этом решении, но мне хотелось бы более общее решение без ключа-значения. Но пока этого хватит. Спасибо
2. Это просто невозможно с помощью
NSNotification
API. На самом деле это универсальное решение, они позволили предоставить дополнительное количество объектов.3. Под общим я подразумеваю, что вы должны предоставить ключ для предоставляемого вами объекта. При простом добавлении одного объекта в NSNotification другим классам в вашем проекте не нужно будет знать, какой ключ используется, потому что ни один из них не используется. Но спасибо за ваш ответ.