Entries

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内検索

フリーエリア

FC2ブログ