一零蓉、關(guān)鍵字通常用在修飾哪些屬性卿嘲?
這里主要介紹ARC環(huán)境下的屬性關(guān)鍵字的使用
? ? weak:相當(dāng)于assign慷嗜,用于修飾弱引用的屬性淀弹,與assign不同的地方是,weak會(huì)在對(duì)象消失的時(shí)候自動(dòng)把指針置為nil庆械,常用于UI控件薇溃。
? ??assign:常用于基本數(shù)據(jù)類型、枚舉缭乘、結(jié)構(gòu)體等非OC對(duì)象類型沐序。
? ??strong:相當(dāng)于retain,用于修飾強(qiáng)引用的屬性堕绩,釋放舊的對(duì)象策幼,將舊的對(duì)象的值賦予新的對(duì)象,并增加索引計(jì)數(shù)+1奴紧,一個(gè)對(duì)象發(fā)生改變另一個(gè)對(duì)象也變化特姐,就像人與影子的關(guān)系一樣,常用于指針變量黍氮,如NSObject及其子類唐含。
? ? copy:建立一個(gè)索引計(jì)數(shù)為1的對(duì)象,然后釋放舊的對(duì)象沫浆,一個(gè)對(duì)象發(fā)生變化不影響另一個(gè)對(duì)象捷枯,就像人與其他人的關(guān)系一樣,常用于NSString類型专执、block類型淮捆。
二、關(guān)鍵字的區(qū)別
1.weak和strong關(guān)鍵字的區(qū)別
? ? weak和strong不同的是他炊,當(dāng)一個(gè)對(duì)象不再有strong類型的指針指向它的時(shí)候,它會(huì)被釋放已艰,即使還有weak型指針指向它痊末。一旦最后一個(gè)strong型指針離去 ,這個(gè)對(duì)象將被釋放哩掺,所有剩余的weak型指針都將被清除凿叠。
2.strong(retain)和copy關(guān)鍵字的區(qū)別
strong是指針拷貝,copy是內(nèi)容拷貝。
? ? 使用strong修飾的屬性盒件,進(jìn)行對(duì)象賦值后就像人與影子的關(guān)系蹬碧,人在動(dòng)影子也在動(dòng),一個(gè)對(duì)象改變另一個(gè)對(duì)象也跟著變化炒刁。代碼示例如下:
@property(strong) NSString *myObject;
NSMutableString*otherObject = [NSMutableString stringWithFormat:@"abcd"];
self.myObject= otherObject;
[otherObject appendString:@"123"];
NSLog(@"%@",self.myObject);//輸出@“abcd123”
? ? 使用copy修飾的屬性恩沽,進(jìn)行對(duì)象賦值后就像人與人的關(guān)系,敵動(dòng)我不動(dòng)翔始,一個(gè)對(duì)象改變不影響另一個(gè)對(duì)象罗心。
@property(copy) NSString *myObject;
NSMutableString*otherObject = [NSMutableString stringWithFormat:@"abcd"];
self.myObject= otherObject;
[otherObject appendString:@"123"];
NSLog(@"%@",self.myObject);//輸出@“abcd”