iOS 類別不能新增屬性原理?

時間 2021-06-03 17:58:44

1樓:Cyandev

Category 在 runtime 中是用乙個結構體表示的:

struct

_category_t

;裡面雖然可以新增 property,但是這些 properties 並不會自動生成 Ivar,也就是不會有@synthesize的作用,dyld 載入的期間,這些 categories 會被載入並 patch 到相應的類中。這個過程是乙個動態過程,Ivar 不能動態新增,因為表示 ObjC 類的結構體執行時並不能改變。

2樓:唐笛

其實屬性是可以填的。只是說現在Xcode自動會給屬性生成成員變數(編譯期時,Xcode給Property生成Ivar,Getter,Setter)讓大家對這個概念有點混淆。Property是Property,Ivar是Ivar。

分類裡面不能新增Ivar是因為分類本身並不是乙個真正的類,它並沒有自己的ISA。有興趣可以研究一下類是怎麼被建立出來的,類最開始生成了很多基本屬性,比如IvarList,MethodList,分類只會將自己的method attach到主類,並不會影響到主類的IvarList。這就是為什麼分類裡面不能增加成員變數的原因。

iOS 為什麼沒有新增分屏功能?

Stardust iPad不是可以分屏嗎?iPhone的話我沒有,不過我安卓手機的分屏功能完全是雞肋,從來沒用過不說,還經常不知道怎麼就觸發了,很煩人。所以我覺得對於小螢幕來說,分屏功能沒有更好,有的話也要弄乙個比較麻煩的觸發方式,不然反而拉低了使用者體驗。 狐狸 以下僅為個人見解 事實上,使用iO...

屬虎真的不能養貓麼?

卜知 可以呀,屬虎的,剛抱回來時貓野不親人護食咬人抓人,典型小野貓,有點事就哈哈 貓警告聲,我喜歡用 哈哈 形容 現在貓不出門親人膽小貪食還慫,我添食時它在旁邊靜靜的坐著。貓剛抱回來三個月內吧,就打了疫苗 那時貓小,後脖頸的皮還很厚實,我手藝也不好,打進去很費勁,貓疼的嗷嗷叫 喂了驅蟲。貓貓和本人一...

屬虎和屬龍不能在乙個家裡嗎?

szha 我表弟屬龍,特別奇怪每次遇見他就覺得心裡不舒服不爽,可能他遇到我也是這樣,莫名其妙的就不想靠近他心裡比較牴觸,可能因為小時候打鬧過我比較記仇所以總是不待見他,但是小時候打鬧過的也不是只有他,但是對他唯獨就像路人還帶點討厭的感覺。 寫個親身體驗吧,我也不知道是因為屬相還是我和我媽性格不合而已...