親のクラスのインスタンスからプロパティを取得および設定しようとしています。オブジェクトを作成してすぐに取得または設定するだけで機能しますが、インスタンスを NSArray に入れると、見つからないと表示されます。
タイプ「id」のオブジェクトにプロパティ「pos」が見つかりません
ViewDidLoad メソッドでクラス Wall (UIView) のインスタンスを作成する Gameplay.m (UIViewController) というビュー コントローラーがあります。
walls = [[NSMutableArray alloc] initWithCapacity:10];
for(int i = 0; i < 10; i++) {
Wall *wall = [[Wall alloc] initWithFrame:CGRectMake(0, 0, 480, 320)];
wall.opaque = NO;
wall.backgroundColor = [UIColor clearColor];
[wall setFrame:CGRectMake(levelpos.x + 200 * i, levelpos.y, 200, 200)];
wall.pos = CGPointMake(levelpos.x + 200 * i, levelpos.y); //setting instance attribute works!
[self.view addSubview:wall];
wall.userInteractionEnabled = NO;
[walls addObject:wall];
}
walls[0].pos = CGPointMake(0, 0); //Doesn't work!
クラス Wall のプロパティ 'pos' は、Wall.h で次のように宣言されます。
@interface Wall : UIView
@property (nonatomic, assign) CGPoint pos;
私は Objective C と OOP の両方でほとんど経験がありません。