objective-c - 调用委托(delegate)的数据提供者 : specifics or generic?

标签 objective-c delegation ios-3.x

我有一个 XML 解析器,它将解析 17 个不同的 XML 文档(我正在对此进行简化)。 当解析器完成其工作时,它会调用发出请求的对象。

第一种方式

一个看起来像的方法

- (void)didReceiveObject:(NSObject *)object ofType:(MyObjectType)type

MyObjectType 是一个枚举。

在这个方法中,我检查了类型并将对象重定向到相应的方法。

第二种方式

我可以接收的 17 种类型的对象中的每一种都有一个回调方法。

- (void)didReceiveFoo:(MYFoo *)foo
- (void)didReceiveBar:(MYBar *)bar
... and so on

哪种使用委托(delegate)的方式会更好? 我们与一位同事就此进行了讨论,但找不到比另一种更有吸引力的方法。它似乎只是决定从解析器或委托(delegate)中调用什么方法....

即使在考虑添加 future 的方法/委托(delegate)回调时,我们也看不到任何真正的问题。

这些方法中的一种比另一种更好吗?还有别的办法吗?

最佳答案

为什么不一起去

- (void)didReceiveObject:(NSObject *)object

然后检查类类型?

这对我来说似乎更清晰且更具可扩展性,因为这意味着您可以在将来解析其他对象而无需添加更多回调。

(我知道这与选项一相同,但我想指出您的第二个参数是不必要的。)

关于objective-c - 调用委托(delegate)的数据提供者 : specifics or generic?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6832039/

相关文章:

objective-c - "at sign"@ 在此 Objective-C 代码中意味着什么

ios - UIImagePickerController 正确地在其上叠加图像

objective-c - iOS 数据包长度

ajax - jQuery 的 delegate() 不会为 AJAX 加载的内容绑定(bind)事件

swift 委托(delegate)?

iphone - UIGestureRecognizer在<OS3.2上崩溃

javascript - iPhone Mobile Safari 3 上的 getBoundingClientRect 等效于什么?

ios - Firebase 查询 - 查找包含字符串的子项

Python:我应该在这里使用委托(delegate)还是继承?

xcode4 - 使用Xcode 4.2为iOS 3.1.3编译