iOS 屬性和成員變量(Category)

屬性和成員變量

成員變量:在類接口部分或類實(shí)現(xiàn)部分定義的變量,所有的成員變量起始都是實(shí)例變量,并不是真正的類變量,成員變量(實(shí)例變量)從該累的實(shí)例被創(chuàng)建開始存在,直到系統(tǒng)完全銷毀這個實(shí)例,可以將稱為實(shí)例成員變量。

@property (nonatomic, strong)UIView  *myView;

屬性:我們聲明了一個屬性,蘋果在將編譯器從GCC轉(zhuǎn)成LLVM之后,就不需要我們?yōu)閷傩月暶鲗?shí)例變量。編譯器沒有匹配實(shí)例變量的屬性,將生成 _myView 的實(shí)例變量,不需要手動創(chuàng)建也不需要通過@synthesize myView給變量生成setter和getter方法。而@syntheSize就是讓編譯器生成setter和getter方法。

Category中的property

Category 只能添加方法,不能添加實(shí)例變量。但是我們會看到在Category 中添加屬性,這種情況下是不會自動生成實(shí)力變量。
在Category中添加屬性,不會自動生成實(shí)例變量,這里面添加其實(shí)是setter和getter方法的聲明,沒有方法的實(shí)現(xiàn)。
匿名類別extension(匿名擴(kuò)展)是可以添加實(shí)例變量的,非匿名類別是不能添加實(shí)例變量的,只能添加方法,或者屬性(其實(shí)也是方法),常用的擴(kuò)展是在.m文件中聲明私有屬性和方法。 Category理論上不能添加變量,但是可以使用rRuntime機(jī)制來彌補(bǔ)這種不足。
如果真的需要給category增加屬性只能通過:
①objc_setAssociatedObject
②objc_getAssociatedObject

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容