在 NSNotificationCenter 中添加自定义属性
Posted
技术标签:
【中文标题】在 NSNotificationCenter 中添加自定义属性【英文标题】:Add custom property in NSNotificationCenter 【发布时间】:2021-06-24 22:10:11 【问题描述】:总的来说,我是 Objective C 的新手。
我正在创建一个监听通知的类
在那个通知中,我打算将它作为具有两个键值对的 NSdictionary
// eventType -> determine which value to change
// value -> value which needs to be changed -> can be string, dynamic object and Bool
TS equivalent would
interface event
eventType: string
value: any
嗯,我目前有
- (void)initMessageEmit
NSLog(@"???? Initialize observers ????");
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(receiveNotification:)
name:@"selfParticipantNotification"
object:nil];
空receive notification
- (void) receiveNotification:(NSNotification *) notification
我希望我的 recieveNotification 是这样的
- (void) receiveNotification:(NSNotification *) notification
if ([[notification name] isEqualToString:@"selfParticipantNotification"])
NSDictionary *event = notification.event;
if (![event value])
if ([[event eventType] isEqualToString:@"enabled"])
[self enabled:event.value]
在上面,如果eventType值为enabled
,我调用一个方法enabled
并更新一个属性值。
value
这里可以是任何东西 -> NSString/NSDictionary/Bool 并且是/应该由 postNotificationName
传递
问题:如何使用 NSNotificationCenter 发送数据?
【问题讨论】:
【参考方案1】:您可以使用object
参数发布任何带有通知的内容,如下所示。
[[NSNotificationCenter defaultCenter]
postNotificationName:@"selfParticipantNotification"
object:@@"key":@"value"];
在接收通知时,您可以读取此值,如下所示。
(void) receiveNotification:(NSNotification *) notification
if ([[notification name] isEqualToString:@"selfParticipantNotification"])
NSDictionary *dictionary = (NSDictionary*)notification.object;
// Do something with dictionary
【讨论】:
非常感谢您的回答,我已经更新了问题,您可以再过一遍吗? 我在示例中使用了NSDictionary
作为对象。您可以在它的位置使用任何对象(您想要的自定义类事件)。在发布通知时传递您的对象并通过 (Event*)notification.object
读取相同的内容,如果您的对象的类称为 Event
例如。
@anny123 前面postNotificationName
的代码回答有误,我现在已经修复了,请查看。
谢谢,我会尝试一下,让你知道这是否有效。再次感谢您的回答
BOOL
不是对象,您可以通过帖子中的[NSNumber numberWithBool:YES]
传递它,并在接收端将其读取为[(NSNumber*)notification.object boolValue]
。以上是关于在 NSNotificationCenter 中添加自定义属性的主要内容,如果未能解决你的问题,请参考以下文章
在 NSNotificationCenter 中添加自定义属性
NSNotificationCenter addObserver 在 Swift 中调用私有方法