assign:修飾基本數(shù)據(jù)類型 (int柱徙、 float缓屠、double、char护侮、NSInteger敌完、CGFloat、BOOL等)
copy:修飾NSString
retain/strong:修飾其他對象類型
?iOS5之前用assign羊初、copy滨溉、retain等關(guān)鍵字修飾屬性,iOS5之后引入了ARC长赞,提出了新的關(guān)鍵字strong晦攒、weak。相對而言得哆,weak相當(dāng)于assign(基本一致)脯颜,strong相當(dāng)于retain(完全一致)。
?引用計數(shù):在OC中每個對象內(nèi)部都有一個與之對應(yīng)的整數(shù)(retainCount)贩据,叫“引用計數(shù)”栋操。當(dāng)一個對象在創(chuàng)建之后它的引用計數(shù)為1闸餐;當(dāng)調(diào)用這個對象的alloc、retain矾芙、new舍沙、copy方法之后引用計數(shù)自動在原來的基礎(chǔ)上加1(OC中調(diào)用對象的方法就是給這個對象發(fā)送一條消息);當(dāng)調(diào)用這個對象的release方法之后它的引用計數(shù)減1剔宪;如果一個對象的引用計數(shù)為0拂铡,系統(tǒng)會自動調(diào)用這個對象的dealloc方法來銷毀這個對象。
對象操作 | Objective-C方法 | 引用計數(shù) |
---|---|---|
生成并持有對象 | alloc/new/copy/mutablecopy | 1 |
持有對象 | retain方法 | +1 |
釋放對象 | release | -1 |
廢棄對象 | dealloc | 0 |