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

// 2.
TestViewController *testVC = [TestViewController new];
  1. 上述参考文献有什么区别?
  2. 什么时候最好使用第一个而不是第二个?

测试视图控制器.h

@interface TestViewController : UIViewController <TestViewControllerProtocol>
4

1 回答 1

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

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

于 2012-11-14T10:25:38.937 回答