首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSNotifications的最佳实践

NSNotifications的最佳实践
EN

Stack Overflow用户
提问于 2012-04-09 08:18:31
回答 1查看 96关注 0票数 1

在我正在编程的游戏中,我对游戏中的所有实体使用一个复合对象。这些实体由组件对象组成,这些组件对象定义了小块的功能,如健康或运动。

我的问题是:

是否可以从组件发布通知,但引用其父实体作为发送通知的对象?

我很想这样做,因为向实体添加观察者要比在实体中找到正确的组件更容易。

有人告诉我,你永远不应该发布另一个对象的通知。

好处和坏处是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-09 08:27:27

通常,您认为通知是“来自”对象的。因此,如果您正在调试,并且希望找到通知的来源,则需要在该对象本身中查找代码。

违反这一期望并不违法,但当某人不得不更加努力地寻找通知的真正来源时,这可能会让他们稍微咒骂你一下。

此外,如果您有许多单独的组件都发布通知,如果您想要更改通知(例如,其中的userInfo ),则重构代码可能会变得更加困难。

如果您可以保证组件始终具有指向其父组件的有效指针,则最好的解决方案是让组件请求其父组件发布通知:

代码语言:javascript
复制
@implementation ComponentA

- (void)someMethod
{
     [self.parent pleasePostSomethingChangedNotification];
}

@end

@implementation Parent

- (void)pleasePostSomethingChangedNotification
{
     // Parent may post the notification immediately,
     // or may selectively post the notification based on some other condition,
     // or post it later on after coalescing changes from several components, 
     // or ...
}

@end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10067640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档