@tom555cat 個人覺得這個問題與Non Fragile ivars無關(guān)
在Objective-C提供的runtime函數(shù)中,確實有一個class_addIvar()函數(shù)用于給類添加成員變量,但是文檔中特別說明:
This function may only be called after objc_allocateClassPair and before objc_registerClassPair. Adding an instance variable to an existing class is not supported.
意思是說,這個函數(shù)只能在“構(gòu)建一個類的過程中”調(diào)用。一旦完成類定義拯爽,就不能再添加成員變量了。經(jīng)過編譯的類在程序啟動后就被runtime加載,沒有機會調(diào)用addIvar蘑斧。程序在運行時動態(tài)構(gòu)建的類需要在調(diào)用objc_registerClassPair之后才可以被使用,同樣沒有機會再添加成員變量须眷。
當別人問Category為什么不能添加屬性學(xué)習(xí)寫簡書博客竖瘾,每次寫簡書都是對過往的回顧 前言 這段時間換工作,發(fā)現(xiàn)面試經(jīng)常會問到一個問題:分類中能不能定義實例變量花颗,為什么捕传?答案:不能。類的內(nèi)存布局在編譯時期就已經(jīng)確定了...