我需要解释一下,尽管NSObject不是控制器,但NSObject类如何成为任何控制器的委托!
答案 0 :(得分:2)
delegate
仅仅是Delegate设计模式的一种实现。在Cocoa类中,它是使用协议来实现的-任何实现特定协议的类都可以是委托。例如,让我们看一下definition of delegate property in UITableView class(在Objective-C中,因为它更好地显示了类和协议之间的区别):
@property(nonatomic, weak) id<UITableViewDelegate> delegate;
在Objective-C中,id
是通用指针-指向任何类的对象的指针。您可以看到UITableView
希望它是delegate
的任何类,但可以实现UITableViewDelegate
协议的类
答案 1 :(得分:0)
一个对象可以是一个委托而不是一个控制器。
答案 2 :(得分:0)
成为代表仅表示您同意对一套方法做出回应。不管是哪种对象,只要了解委托协议中的方法,您都可以成为委托。
例如,您有一个中央表视图管理器对象,该对象了解整个UI中的多个表视图。您可以使该表视图管理器成为您应用程序中所有表视图的委托。 (我不知道这是否有意义,但是如果有理由的话,您当然可以这样做。)
答案 3 :(得分:0)
将一个类作为特定类的委托的唯一要求是实现所需的协议。它不依赖于其继承链。可以是uiviewcontroller,uitableviewcontroller或仅仅是NSObject。
如果您的班级确认了所需的协议,那么它很可能会成为委托。