0

iOS 開発の世界に足を踏み入れた私は、なじみのないことに遭遇しました。私のMainViewController.mファイルには、次のものがあります。

//import statements

@interface MainViewController() <CarouselViewDelegate>
//declaration of properties
@end

@implementation
//code
@end

ファイルは次のMainViewController.hようになります

@interface MainViewController : UIViewController
//code
@end

私が混乱しているのは、これが何をするかです(一般的な意味で): @interface MainViewController() <CarouselViewDelegate>. ジェネリックを使用しているように見えますが、ここで何が起こっているのか正確にはわかりません。

どんな助けでも大歓迎です、ありがとう!

4

2 に答える 2

2

最初の部分@interface MainViewController()クラス拡張です

また、(ヘッダー ファイルではなく) プライベートな方法でクラス インターフェイスを拡張できます。Objective-C のカテゴリと同じですが、匿名です。

2 番目のビット<CarouselViewDelegate>は、クラス拡張がCarouselViewDelegate プロトコルに準拠することを示します。

プロトコルとは、クラスが別のクラスのために何らかの能力で機能するために採用できる ( @optional) または採用しなければならない ( )メソッドを定義するインターフェイスです。@requiredこの場合、プロトコルはと呼ばれるクラスのデリゲートCarouselViewプロトコルです。

その機能を確認するには、特定のプロトコルのドキュメントまたはインターフェイスを参照する必要があります。CarouselViewまた、MainViewControllerデリゲートを有効にするには、少なくとも 1 つのインスタンスをデリゲートに接続する必要があります。通常、これはIBOutletsを使用してインターフェイス ビルダーで行われますが、 などのプログラムで行うこともできますcv.delegate = mainVC

于 2013-11-07T16:19:58.793 に答える
0

つまり、呼び出されたデリゲートを実装しようとしています。CarouselViewDelegate

言い換えれば、誰かが実装することを期待しているCarouselViewDelegate別のクラス (おそらく と呼ばれる) によって発行されたメソッドのセットです。CarouselViewこの場合、あなたMainViewControllerはそれらを実装します。

Java の一種のインターフェースですが、同じではありません。

詳細はこちら:

iOS のデリゲートとデータソース

于 2013-11-07T15:56:16.023 に答える