// 1.
TestViewController <TestViewControllerProtocol> *testVC = [TestViewController new];

// 2.
TestViewController *testVC = [TestViewController new];



以上参考之间有什么区别?
什么时候最好使用第一个而不是第二个呢?


TestViewController.h

@interface TestViewController : UIViewController <TestViewControllerProtocol>

最佳答案

区别:两者均为TestViewController类型,而只有第一个实现协议TestViewControllerProtocol
仅当该类未明确符合该协议并且您需要向该协议中定义的对象发送消息时才需要第一个。不指定协议并随后发送消息将导致警告或错误。


一种可能的情况是,您有一个具有多个子类的超类TestViewController,其中只有两个子类实际实现该协议。如果您有一些代码使用两个都实现了该协议的子类,则可以使用第二个选项轻松地存储对它们的引用。

08-26 03:25