iOS開發小貼士—實例變量,成員變量和屬性的區別

經常會混淆這三者之間的區別,今天在此做個總結!

貼代碼

@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>
{
    UITableView     *tableV;
    
    NSInteger       integer;
}

@property (nonatomic, strong)UIButton *btn;

@end

首先明確{ }里的都是成員變量:tableV、integer都是成員變量。那什么是實例變量呢?
實例變量的本質是成員變量,但是是針對類而言。就比如上面{ }中tableV就是實例變量。
剩下的@property (nonatomic, strong)UIButton *btn;也就是屬性。

他們三者之間有什么區別以及作用呢?

成員變量和實例變量都是類的私有變量,主要是服務類本身的,無法生成set、get方法進而就無法與外界聯系,是類的私有變量。
與之對應的屬性允許外界訪問,并且在聲明屬性的時候假如沒有自己聲明@ dynamic系統會幫助我們生成set、get方法。

上面介紹完了這三者之間的區別總感覺寫的太少,我再多說一段關于屬性property后面可以接什么修飾符。

property()內攏共可以接4種修飾符:
①:原子性natomic和非原子性nonatomic:由于存在手機客戶端的性能瓶頸以及原子性也并不是絕對線程安全等問題,我們默認都選擇非原子性nonatomic

②:內存管理語義:retain,strong,copy,weak,assign。具體用法和區別上網搜,忙著備面試,沒時間細聊。

③:讀寫權限:readwrite、readonly

④:getter和setter修飾符
@property(getter = getMethodName, setter = setMethodName) Object *obj;
這兩個屬性修飾符用于設置自定義生成的getter和setter方法名,使用之后將不再使用系統默認的setter和getter方法名。

就嘮這么多。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容