私にはクラスがあり、このクラスにはデリゲートプロトコルがあります。このクラスを使用してメインクラスにオブジェクトを作成し、メインクラスをデリゲートとして割り当てました。メインクラスには、作成したクラス内で読みたいプロパティがあります。それから私はこれをします:
BOOL prop = [self.delegate myProperty];
Xcodeは「delegate
応答しない可能性がある」と文句を言いますmyProperty
self.delegate
読むためにメッセージmyProperty
を送信していて、キャストされていないオブジェクトにメッセージを送信してもXcodeが文句を言わない場合、なぜそれをしなければならないのですか?
BOOL prop = [(myMainClass *)self.delegate myProperty];
それを機能させるには?
より明確にするために、キャストせずにオブジェクトに送信されるメッセージの例を次に示します。
[self.myArray enumerateObjectsUsingBlock:^(id obj, NSUInteger index, BOOL *stop){
int Number = [[obj dictionaryOfNames] count];
}];
self.myArray
ディクショナリであり、このプロパティを持つ別のクラスのオブジェクトの配列ですdictionaryOfNames
。Xcodeは私にこれをキャストするように頼んだことはありません:
int Number = [[(myOtherClass *)obj dictionaryOfNames] count];
私が上でしなければならなかったようにmyProperty
。