这有一种响应者链的感觉,但不同之处在于,响应者链是视图和视图控制器的特定操作。
好吧,我需要通过几个不相关的类传递一个方法调用,并且对Objective-C来说是相当新的,我不确定它是否会定义一个协议,然后在每个协议上实现该协议呼叫需要通过的类。
例如......
ClassA是ClassB的委托。
ClassB是ClassC的委托
...因此'响应者链'的感觉。
将代码传递给从C到B的调用是否合理。
我认为在某些时候,当链条变得太长时,你可能会推荐一种通知技术,但我不知道建议的长度是多少。
# create_table "sources", force: true do |t|
# t.string "device_id"
# t.string "source_type"
# t.string "source_identifier"
# ...
# create_table "users", force: true do |t|
# # t.string "email", default: "", null: false
# t.string "encrypted_password", default: "", null: false
# ...
# t.string "first_name"
# t.string "last_name"
# t.string "phone"
# t.integer "source_id"
# ...
# create_table "memberships", force: true do |t|
# t.integer "user_id"
# t.integer "organization_id"
# t.datetime "verified_at"
# ...
答案 0 :(得分:3)
不。没有错。除了潜在的复杂性。
如果需要,您可以将其定义为协议。或者您可以将其定义为常见的抽象超类(如果可能)。
协议通常是目前使用的方式,使用@optional
需要使用respondsToSelector:
测试(或conformsToProtocol:
)。
总而言之,你应该非常小心使用这种模式。具体来说,它意味着很多关于应用程序的体系结构,因此,您希望确保体系结构是健全的。
答案 1 :(得分:2)
另一种方法是使用NSNotificationCenter
发布NSNotification
。对象可以将自己添加为观察者。根据您的需要,这可能是通过委托链传递消息的一个很好的替代方案。
如果多个对象需要响应消息,则此功能特别有用。