我有4个班级(观点):
A,B,C和D
A类呼叫B,B呼叫C,C呼叫D:
A> B> C> d
在D类中,我实现了一个委托协议,我想在A类中捕获委托事件。
我怎样才能做到这一点?
答案 0 :(得分:10)
有多种方法可以实现这一目标。在你的情况下最好的取决于情况。以下是一些想法:
NSNotifications
(不要与Mountain Lion中的NSUserNotifications
混淆)。在A类中,您向默认通知中心发布通知,在D类中注册此通知并根据需要进行处理。只有在没有其他工作的情况下才使用这种方法,因为这会导致更糟糕的代码。答案 1 :(得分:0)
将ClassD成员委托指定为ClassA对象。
让我解释一下
如果在ClassD中有UITableView并想在ClassA中触发ClassD tableView Delegates,请将tableView委托指定为ClassA对象,并在ClassA中实现所有UITableView委托。
例如:ClassD_tableView.delegate = classAObj;
注意:在A类中实现ClassD tableView委托方法,不要在ClassD中创建ClassA的新对象。您可以通过传递参数或使用UIResponder来获取ClassD中的父类A.