日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ios--成员变量与属性的区别

發布時間:2025/4/5 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ios--成员变量与属性的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. 成員變量

1.成員變量的作用范圍:

@public:在任何地方都能直接訪問對象的成員變量
@private:只能在當前類的對象方法中直接訪問,如果子類要訪問需要調用父類的get/set方法
@protected:可以在當前類及其子類對象方法中直接訪問(系統默認下是用它來修飾的)
@package:在同一個包下就可以直接訪問,比如說在同一個框架

2.注意:

無論父類是在@interface還是@implementation聲明的成員變量子類都能擁有;但是子類能不能直接通過變量名來訪問父類中定義的成員變量是需要看父類中定義的成員變量是由什么修飾符來修飾的。

3.默認:

在.m中成員變量的修飾符為@private.
在.h中成員變量的修飾符@protected.

  • 下面給大家演示下代碼:

創建一個學生類,然后分別在.h跟.m中聲明4中不同的類型的變量,創建一個MidStudent來繼承Student
  • 我們在MidStudent中來調用下看看這些變量哪些可以訪問哪些不可以:

    有圖可以看出,我們在.m里面聲明的變量子類是無法訪問的(即使給他@public),也會被認為是@private,所以我們的對外屬性都會放到.h去聲明,然而由于six變量是@private,所以子類還是無法訪問的
  • 我們再去外部去調用下MidStudent 對象 看看是什么效果

    由于我們沒有在Student或他的子類里面,所以只能訪問.h中@public修飾的變量,也就是name,由于age是@protrcted在外部是不能被訪問的!

二. 屬性

關于屬性的詳細說明我就不在這里做過多的說明了,請查詢下面的網址:
Objective-C 編程語言官網文檔(五)-屬性的聲明

  • 關于@synthesize object = _object 的解釋
    我們可能見過很多地方都有這樣的代碼:

1.@property的作用是定義屬性,聲明getter,setter方法。(注意:屬性不是變量)
2.@synthesize的作用是實現屬性的,如getter,setter方法
3.總結:一定要分清屬性和變量的區別,不能混淆。@synthesize 聲明的屬性=變量。意思是,將屬性的setter,getter方法,作用于這個變量。
4.但Xocde4.5以后,編譯器會為你自動實現setter及getter方法,如果他找不到_father,會為你自動創建一個_father的變量
  • 聲明屬性的時候會有一些關鍵詞這里簡單說下他們的含義:
atomic: 原子性

在objective-c 屬性設置里面 默認的就是atomic ,意思就是 setter /getter函數是一個原子操作,如果多線程同時調用setter時,不會出現某一個線程執行完setter所有語句之前,另一個線程就開始執行setter,相當于 函數頭尾加了鎖 . 這樣的話 并發訪問性能會比較低 .

nonatomic: 非原子性

非原子操作 一般不需要多線程支持的時候就用它,這樣在 并發訪問的時候效率會比較高 . 在objective-c里面通常對象類型都應該聲明為非原子性的. iOS中程序啟動的時候系統只會自動生成一個單一的主線程.程序在執行的時候一般情況下是在同一個線程里面對一個屬性進行操作.

getter=getterName

指定 get 方法,并需要實現這個方法 。必須返回與聲明類型相同的變量,沒有參數.相當于重新命名getter方法

setter=setterName:

指定 set 方法,并需要實現這個方法 。帶一個與聲明類型相同的參數,沒有返回值(返回空值)

當聲明為 readonly 的時候,不能指定 set 方法


重新聲明setter,getter方法
readwirte

如果沒有聲明成 readonly ,那就 默認是 readwrite 。可以用來賦值,執行set方法

readonly

不可以被賦值

assgin

通常用于標量(簡單變量 int , float , CGRect 等)
一種典型情況是用在對對象沒有所有權的時候,通常是 delegate ,避免造成死循環(如果用 retain 的話會死循環)

strong

釋放舊對象 將舊對象的值賦予輸入對象 ,再提高輸入對象的索引計數為 1 ,常使用在繼承自 NSObject 的類。(MRC為retain)

weak

weak 不增加對對象的引用計數,也不持有對象,因此不能決定對象的釋放。它比 assign 多了一個功能,當對象消失后自動把指針變成 nil

copy

建立一個索引計數為 1 的對象 然后釋放舊對象 對 NSString 它指出 ,在賦值時使用傳入值的一份拷貝 ,拷貝工作由 copy 方法執行,此屬性只對那些實行了 NSCopying 協議的對象類型有效。

總結

以上是生活随笔為你收集整理的ios--成员变量与属性的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 四虎黄网 | 精品人妻一区二区免费 | 成人精品视频网站 | 日韩一区免费 | 成人在线短视频 | 黄色成人免费网站 | 国产aⅴ激情无码久久久无码 | 亚洲 欧美 国产 另类 | 偷拍自拍一区 | 深夜福利国产 | 国产精品亚洲自拍 | 国产91专区 | 开心色站 | 少妇又紧又色又爽又刺激视频 | 伊人夜色 | 亚州av在线播放 | 国产精品成人免费视频 | 免费看aaaaa级少淫片 | 夜夜精品一区二区无码 | 日韩欧美中文字幕在线视频 | 97国产精品视频人人做人人爱 | 国产日韩一区二区在线观看 | 国产亚洲91 | 久久久久久一区二区 | 天天爽夜夜爽 | 91嫩草影视 | 精品久久人人 | 久久久男人的天堂 | 一本在线| 国产精品天天av精麻传媒 | 亚洲成人黄色片 | 国产美女福利视频 | ts人妖在线 | 亚洲婷婷小说 | 97干干| 欧美一区二区三 | 五月激情在线 | 亚洲s码欧洲m码国产av | 日韩欧美三级在线观看 | 青草视频免费在线观看 | 中文字幕校园春色 | 亚洲综合在线观看视频 | 亚洲九九色 | 日本一区视频在线观看 | 五月天激情国产综合婷婷婷 | 一二三区在线观看 | 三级欧美韩日大片在线看 | xxxx久久 | 亚洲国产网 | 超级碰在线视频 | 玖玖在线资源 | 亚洲日本视频在线观看 | 日本免费一区二区三区四区 | 久久国产网站 | 天天天天天天操 | 少妇高潮一区二区三区四区 | 涩涩视频在线播放 | 日本九九热 | 天天干天天做 | 五月天视频网站 | 91天天爽 | av网站有哪些 | 国产精品又黄又爽又色无遮挡 | 色77777| 五月婷婷基地 | 欧美日韩三级在线观看 | 国产精品偷伦视频免费观看了 | av中文天堂在线 | 午夜影院污| 三级性生活片 | 成人国产片 | 日韩精品视 | 无遮挡aaaaa大片免费看 | 美女黄色一级视频 | 午夜试看120秒 | √天堂资源地址在线官网 | 亚洲激情视频在线观看 | 日本不卡视频在线观看 | 污视频软件在线观看 | 成人h片| 国产精品毛片久久久久久久 | 五月婷婷激情视频 | 天天都色 | 欧美色图88| 污站在线观看 | 成人在线视频网 | 黄色一级片av | 秘密基地免费观看完整版中文 | 久久精品三级 | 中文字幕精品国产 | 日本少妇全体裸体洗澡 | 一区二区三区国产视频 | 69综合 | 污视频免费看 | 欧美成人r级一区二区三区 中文无码一区二区三区在线观看 | 成人夜晚看av | 欧美又粗又长又爽做受 | 美女脱了裤子让男人捅 | 亚洲精品人人 |