我沒有什麼特別要實現,但我想了解更多關於類擴展。有關類擴展和繼承問題在Objective-C
這是類擴展直接從apple Categories and extensions的解釋:
@interface MyClass : NSObject
@property (retain, readonly) float value;
@end
// Private extension, typically hidden in the main implementation file.
@interface MyClass()
@property (retain, readwrite) float value;
@end
它確實讓我感覺良好,但是,假如我有一個MyClass2延伸MyClass的:
@interface MyClass2 : MyClass
@property (retain, readwrite) float value;
@end
,所以我有幾個問題,我可以很容易地回答,如果類延伸沒有涉及:
- 在運行時,當MyClass的我做的轉讓self.value = 2或只是打電話浮動X = self.value,其中setter和getter @財產被稱爲? MyClass或MyClass2?
- 不應該編譯器至少發出一個關於只讀屬性被重新定義的警告嗎?
- 我知道@property是由伊娃支持的,所以最終有多少伊娃?與此相關,從MyClass2調用相同的self.value哪個ivar會設置?
請不要將我的答案標記爲正確。我最初給出了錯誤的答案,並且只有在馬丁R讓我做對了之後才糾正它。 – emrys57