次の名前のクラスを作成しましたFoo
:
@interface Foo:NSObject{
int myInt;
}
@property int myInt;
@end
およびFoo
名前付きのサブクラスBar
:
@interface Bar:Foo{
NSString *myString;
}
@property (copy) NSString *myString;
@end
Bar
次のように、Foo
オブジェクトとして配列に格納しようとしています。
-(void)createBar{
Foo *object = [[Bar alloc]init];
// myArray is an instance of NSMutableArray
[myArray addObject:object];
}
私は実際に複数のサブクラスを持っているのでこれを行っていますFoo
(それらすべてをリストしたくありません)。配列からオブジェクトを取得し、そのオブジェクトにメッセージを送信してmyString
変数を取得すると、アプリケーションは何もしません。 例:
-(NSString *)getStringFromFooAtIndex(NSUInteger)index{
Foo *object = [myArray objectAtIndex:index];
return [object myString];
}
「メッセージ」がどのように機能するか誤解していますか?私は、オブジェクトにメッセージを送信でき、そこにあるかどうかに関係なく、オブジェクトを呼び出すことができると想定していました。これを他の方法で行う必要がありますか?配列はすべての異なるタイプのFoo
子クラスを保持し、それらをそこに格納するために必要です。