Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

gcc 4.2の奇妙なコンパイルエラー

タグ: Objective-C
@interface Foo : NSObject
@end

@interface Bar : NSObject
{
    Foo *foo;
}
@property (nonatomic, readonly) NSObject *foo;
@end
Bar *bar = [[Bar alloc] init];
NSObject *foo1 = [bar foo]; // no error
NSObject *foo2 = bar.foo; // error: type of accessor does not match the type of property 'foo'

( ゚д゚) ……

@interface Baz : NSObject
{
    Foo *_foo;
}
@property (nonatomic, readonly) NSObject *foo;
@end
Baz *baz = [[Baz alloc] init];
NSObject *foo1 = [baz foo]; // no error
NSObject *foo2 = baz.foo; // no error

意味が分からない。
「プロパティと同名だが型の異なるインスタンス変数」が存在するだけでなぜ「アクセサの型とプロパティの型が一致しなく」なる?
少なくともインタフェース部だけではプロパティとインスタンス変数は関連付かない。

@synthesize foo;

がエラーになるというならまだ分かるが……

スポンサーサイト

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://idlysphere.blog66.fc2.com/tb.php/205-ed0a36df
この記事にトラックバックする(FC2ブログユーザー)

Appendix

タグ

Blog内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。