2011-09-19 31 views
0

我定義的一些變量的基類,看起來像:參考Objective-C的超可變

@interface Foo : NSObject { 
    SomeObject *baz; 
} 

@implementation Foo 
@synthesize baz; 

// ... 

@end 

@interface Bar : Foo 
@end 

@implementation Bar 

-(void)someMethod { 
    NSString *foostr = [NSString stringWithFormat:"%@", baz]; 
} 

我實際上有大約30子類的基類。

的問題是,在大部分時間裏我可以引用基類的變量壞簡稱爲巴茲但在幾個子類我必須明確地引用壞self.baz的...

有其他人看到這種病理?

+0

題外話,但你的例子是充滿了錯誤和格式問題。如果這是從源頭複製並直接粘貼的,那麼也許錯誤需要首先解決。 –

+0

當你說你不能引用「baz」時,你是在談論xcode中缺少代碼完成,還是實際上不會編譯? –

回答

1

如果您的編譯器設置爲gcc,則存在一個錯誤:定義@property而沒有對應的ivar定義(這是完全合法的)的子類隱藏了任何超類ivars。

解決方案:將您的編譯器切換到LLVM。

(如果這個解決方案不是出於某種原因可行的,回退是,你發現了什麼:使用短信,而不是直接的參考。)

+0

這是問題所在。謝謝 - 我不會拿出我剩下的頭髮。約翰 – john