OC-屬性修飾符

OC對象:不可變對象copy是淺拷貝肌括,其他(可變對象的mutablecopy與copy付材,不可變對象的mutablecopy)是都深拷貝刨肃;copy是不可變對象,mutablecopy是可變對象盅弛;


copy修飾字符串:在setter方法中會判斷傳入的字符串是否是可變的钱骂,如果是可變的就分配新的內(nèi)存再賦值;如果是不可變的就直接賦值地址挪鹏,而實際上開發(fā)中其實大量使用的是不可變的字符串见秽,所有最好使用strong修飾字符串(針對傳入不可變的字符串),可以提升性能(在setter方法中會減少一次判斷)讨盒;

注意:針對于當把NSMutableString賦值給NSString的時候解取,才會有不同,如果是賦值是NSString對象返顺,那么使用copy還是strong禀苦,結(jié)果都是一樣的,因為NSString對象根本就不能改變自身的值遂鹊,他是不可變的振乏。

把一個對象賦值給一個屬性變量,當這個對象變化了秉扑,如果希望屬性變量變化就使用strong屬性昆码,如果希望屬性變量不跟著變化,就是用copy屬性邻储。

由此可以看出:?

對源頭是NSMutableString的字符串赋咽,strong僅僅是指針引用,增加了引用計數(shù)器吨娜,這樣源頭改變的時候脓匿,用這種strong方式聲明的變量(無論被賦值的變量是可變的還是不可變的),它也會跟著改變;而copy聲明的變量宦赠,它不會跟著源頭改變陪毡,它實際上是深拷貝米母。

對源頭是NSString的字符串,無論是strong聲明的變量還是copy聲明的變量毡琉,當?shù)诙卧搭^的字符串重新指向其它的地方的時候(指針地址不變铁瞒,指向的內(nèi)存地址變了),屬性變量指針地址不變桅滋,指向的內(nèi)存地址還是指向原來的最初的那個位置慧耍,也就是說其實二者都是指針引用,也就是淺拷貝丐谋。

另外說明一下芍碧,這兩者對內(nèi)存計數(shù)的影響都是一樣的,都會增加內(nèi)存引用計數(shù)号俐,都需要在最后的時候做處理泌豆。

其實說白了,對字符串為啥要用這兩種方式吏饿?我覺得還是一個安全問題踪危,比如聲明的一個NSString *mStr變量,然后把一個NSMutableString *str變量的賦值給它了猪落,如果要求mStr跟著str變化陨倡,那么就用strong;如果mStr不能跟著str一起變化,那就用copy许布。而對于要把NSString類型的字符串賦值給mStr兴革,那兩都沒啥區(qū)別。不會影響安全性蜜唾,內(nèi)存管理也一樣杂曲。


用copy修飾Block時,在MRC和ARC下的區(qū)別:

MRC:block訪問外部局部變量袁余,block存放棧里面擎勘,只要block訪問變量,而且是整個APP都存在的變量颖榜,那么肯定在全局區(qū)棚饵,在MRC中,不能使用retain引用block掩完,因為不會放在堆里面噪漾,在ARC中智能使用copy才會把block放在堆里面

ARC:只要block訪問外部局部變量,block就會放在堆里面且蓬,可以使用strong去引用欣硼,因為本身就已經(jīng)存放在堆區(qū)了,也可以使用copy恶阴,但是strong性能更好诈胜;


深拷貝豹障,淺拷貝與指針引用:

深拷貝:生成新的指針(指針地址不同)指向一塊新的內(nèi)存保存值;

淺拷貝:內(nèi)存地址不變焦匈,生成一個新的指針地址指向相同的內(nèi)存地址血公;

指針引用:共用同一個指針,指向相同的內(nèi)存地址缓熟,只是指針的引用計數(shù)+1累魔;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市荚虚,隨后出現(xiàn)的幾起案子薛夜,更是在濱河造成了極大的恐慌籍茧,老刑警劉巖版述,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異寞冯,居然都是意外死亡渴析,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門吮龄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來俭茧,“玉大人,你說我怎么就攤上這事漓帚∧刚” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵尝抖,是天一觀的道長毡们。 經(jīng)常有香客問我,道長昧辽,這世上最難降的妖魔是什么衙熔? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮搅荞,結(jié)果婚禮上红氯,老公的妹妹穿的比我還像新娘。我一直安慰自己咕痛,他們只是感情好痢甘,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著茉贡,像睡著了一般产阱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上块仆,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天构蹬,我揣著相機與錄音王暗,去河邊找鬼。 笑死庄敛,一個胖子當著我的面吹牛俗壹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播藻烤,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼绷雏,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了怖亭?” 一聲冷哼從身側(cè)響起涎显,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎兴猩,沒想到半個月后期吓,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡倾芝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年讨勤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晨另。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡潭千,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出借尿,到底是詐尸還是另有隱情刨晴,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布路翻,位于F島的核電站狈癞,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏帚桩。R本人自食惡果不足惜亿驾,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望账嚎。 院中可真熱鬧莫瞬,春花似錦、人聲如沸郭蕉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽召锈。三九已至旁振,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拐袜。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工吉嚣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蹬铺。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓尝哆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親甜攀。 傳聞我的和親對象是個殘疾皇子秋泄,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容