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

// 2.
TestViewController *testVC = [TestViewController new];
  1. 上記の参照の違いは何ですか?
  2. 2番目のものよりも最初のものを使用する方が望ましいのはいつですか?

TestViewController.h

@interface TestViewController : UIViewController <TestViewControllerProtocol>
4

1 に答える 1

1
  1. 違い:どちらもタイプですがTestViewController、最初の1つだけがプロトコルを実装しますTestViewControllerProtocol
  2. 1つ目は、そのクラスがそのプロトコルに明示的に準拠しておらず、そのプロトコルで定義されているオブジェクトにメッセージを送信する必要がある場合にのみ必要です。プロトコルを指定せず、その後メッセージを送信すると、警告またはエラーが発生します。

考えられるシナリオの1つは、TestViewController複数のサブクラスを持つスーパークラスがあり、そのうちの2つだけが実際にそのプロトコルを実装している場合です。両方がプロトコルを実装するサブクラスの2つを使用するコードがある場合は、2番目のオプションを使用してそれらへの参照を簡単に格納できます。

于 2012-11-14T10:25:38.937 に答える