11

如果實例變量屬於一個類的實例,那麼類變量將屬於元類的一個實例,我應該這樣想。但是我對Objective-C元類的經驗告訴我這不太可能。class_getClassVariable()是做什麼的?

我想知道class_getClassVariable做什麼,而不是class_getInstanceVariable,以及爲什麼在運行時沒有class_setClassVariable

回答

13

我發現了一個討論有關在這裏: http://lists.apple.com/archives/objc-language/2008/Feb/msg00021.html

不,這是不可能的。沒有編譯器支持,並且沒有運行支持; class_getClassVariable(cls, name)僅僅調用 class_getInstanceVariable(cls->isa, name)

如果可能的話,它可能不會給你每個子類的新變量 。 Objective-C的元類並不是第一個,它足以讓它運行良好。

1

的class_getClassVariable()函數沒有任何意義,因爲有作爲一類變量在Objective C.

我的猜測沒有這樣的事情是,類變量,由運行時支持,但不是通過語言。