0
訪問我有以下代碼給出了編譯器錯誤"Instance Variable '_someBool' is prive"
。合成iVar無法從子類
@interface Foo: NSObject
@property (assign) BOOL someBool;
@end
@implementation Foo
@end
@interface Bar: Foo
@end
@implementation Bar
- (BOOL)someBool {
// subclass specific getter logic
return _someBool;
}
@end
爲什麼我無法訪問被繼承的屬性的存儲?那麼重寫這個getter的正確方法是什麼?
在我的情況下,超類是在所有方法實現中拋出斷言的「抽象接口」。不能改變這一點。在子類中重寫setter/getter並在那裏添加一個iVar。屬性仍然定義在超級。 –
@AlexBollbach - 如果屬性getter和setter都在「abstract」超類中被定義爲拋出斷言,那麼將不會有任何自動分配的後備變量,因此您不會「失去」空間。如你所做的那樣添加你自己的iVar是一條路。 – CRD
只有getters已經超越了super。 –