0

したがって、これがどのように機能するかはわかりません。同僚のC#(私は.NET開発者ではありません)を簡単に調べましたが、メソッドに渡されるものの多くは、インターフェイスに準拠するクラスオブジェクトであることがわかりました。これはObjective-cでも行うのに良いことですか?

たとえば、MapKit APIをいじって、MKAnnotationプロトコルに準拠する独自のクラスを作成したので、マップにドロップされる一般的なピンのカスタムビューといくつかの追加プロパティを使用できます。作成したこのクラスを使用する予定です。

Address : NSObject

マップ上にピンを配置するときのMKPlacemarkクラスとは対照的です。私の他のビューコントローラとモデルクラスでは、次のことを行いますか?

@property (nonatomic, strong) id <MKAnnotation> object; //1 

また

@property (nonatomic, strong) Address *object; //2

例1から始めましたが、Addressオブジェクトのプロパティのいくつかが実際に必要になったときに、とにかくオブジェクトを型キャストする必要があることに気付きました。ですから、私の最後の質問は、1つまたは2つが優れていると思いますが、どのようなシナリオでですか?ありがとう。

4

2 に答える 2

0

私はこのように見えるオプション3で行きます:

Address : NSObject <MKAnnotation>

次に、クラスを実装するときに、MKAnnotationプロトコルに準拠するために必要なメソッドを実装します。

このようにして、両方の長所を活かすことができます。

プロトコルは、C#やJavaなどの言語のインターフェイスと非常によく似ています。主な違いの1つは、特定のメソッドを必要とし、他のメソッドをオプションにする機能です。Objective-Cは非常に動的な言語であるため、などの呼び出しが多数表示され[foo responseToSelector:@selector(someSelector:)]ます。オプションとしてマークされている場合-someSelector:は、受信者がそのメッセージに「応答」するかどうかを確認する必要があります。ただし、必須としてマークされている場合、そのメソッドを実装しなかった場合、コンパイルは警告をスローします。詳細については、Objective-C言語リファレンスをご覧ください。

于 2012-06-05T04:30:50.837 に答える
0

IDタイプにstrongキーワードを使用することはできません。代わりに、次を使用してください。

@property (nonatomic, assign, readwrite) id<MyDelegate> delegate;
于 2012-06-05T04:39:41.197 に答える