1.readwrite readonly
2.nonatomic ?atomic
3.assign weak strong?
一般來(lái)說(shuō),我們都用assign去修飾OC的基本數(shù)據(jù)類型谴蔑,but why魁莉?
因?yàn)閍ssign并不會(huì)使對(duì)象的引用計(jì)數(shù)加1埋合,也就是說(shuō)如果用assign去修飾一個(gè)對(duì)象虾标,這個(gè)對(duì)象會(huì)立即被釋放淮阐,重要的是assgin在被釋放的時(shí)候是不會(huì)自動(dòng)置為nil蔓腐,還是保留對(duì)象的指針地址矩乐,會(huì)形成野指針
此外weak必須用于修飾對(duì)象,這和他自動(dòng)置為nil相關(guān)回论,如果強(qiáng)行使用weak修飾基本數(shù)據(jù)類型散罕,編譯器會(huì)報(bào)一個(gè)大大的紅色錯(cuò)誤!
4.copy mutable copy
5.copy strong
通過(guò)上述對(duì)copy與strong的描述傀蓉,copy和strong最終都會(huì)返回一個(gè)引用計(jì)數(shù)為1的對(duì)象欧漱,所以單單從內(nèi)存管理上說(shuō)copy和strong并無(wú)任何區(qū)別,但是copy始終會(huì)返回一個(gè)不可變對(duì)象葬燎,他的值是不會(huì)被修改的误甚。
而strong不同,被strong修飾的對(duì)象谱净,可能會(huì)被可變對(duì)象賦值窑邦,從而在外部導(dǎo)致不可預(yù)料的被更改的情況。
總而言之岳遥,是否使用copy或strong還是根據(jù)具體場(chǎng)景來(lái)定奕翔,這里還有個(gè)性能優(yōu)化的小技巧,如果copy的是可變的對(duì)象浩蓉,會(huì)對(duì)它做一次完全深拷貝/不完全深拷貝派继,性能上是肯定不如strong直接引用計(jì)數(shù)+1來(lái)的快。
6.?__autoreleasing
全局變量和實(shí)例變量是無(wú)法用__autoreleasing來(lái)修飾的捻艳,不然編譯器會(huì)報(bào)錯(cuò)驾窟,而局部變量用__autoreleasing修飾后,其指向的對(duì)象认轨,在當(dāng)前autorelease pool結(jié)束之前不會(huì)被回收:
注意 retain在ARC中可以使用
bool 和BOOl的區(qū)別
1、類型不同
BOOL為int型
bool為布爾型
2衷恭、長(zhǎng)度不同
bool只有一個(gè)字節(jié)
BOOL長(zhǎng)度視實(shí)際環(huán)境來(lái)定此叠,一般可認(rèn)為是4個(gè)字節(jié)
3、取值不同
bool取值false和true随珠,是0和1的區(qū)別
BOOL取值FALSE和TRUE灭袁,是0和非0的區(qū)別