IOS的內存管理性能
1.再IOS中對於每個對象都會有一個對象計數器atom
2.IOS內存管理分爲三種(MRC:手動釋放內存 autorelaese:自動釋放內存 ARC:自動引用計數)spa
(1)MRC 黃金法則: 一旦對象被建立(new alloc init copy retain),那麼就由建立者釋放。總結:誰建立,誰釋放,誰retain,誰release。其中 retain 計數器加一 release 計數器減一。3d
使用方式:Target-> 搜索auto -> 找到Automatic Reference Counting 將其修改爲NO指針
如狀況一orm
//實例化Person對象 此時計數器爲 1對象
Person *person1 = [[Person alloc]init];內存
//計數器加一get
[person1 retain];it
//計數器減一
[person1 release];
//打印當前計數器的值
NSLog(@"%li",[person1 retainCount]);
如狀況二
//若只是建立一個person的指針 則計數器爲 0
Person *person;
// 由於計數器的release是針對於對象計數器而言的,此時沒有對象,因此即便[person retain] 打印出的計數器的值永遠爲0
如狀況三
//建立了一個Dog對象
Dog *dog = [[Dog alloc]init];
//給人設置狗對象後,狗被引用一次 , 此時dog的retainCount爲2
[person1 setDog:dog];
//類的類屬性,設置和獲取,set和get,如今能夠簡便化:
//@property \ @synthesize
//noatomic 高性能 atomic 低性能
//retain 表明針對於這個對象計數器+1
//readonly 表明對象只讀
//setter 、getter 更改這個方法的名字
//assign 賦值經過針對於簡單的數據類型
//3.釋放內存用dealloc,通常在.m文件中實現 [super dealloc],只要調用對象的release方法,就會進入dealloc;
//4.類的類屬性,set和get,如今能夠簡化爲:@property @synthesize
//noatomic 高性能 atomic 低性能 readonly 表明對象只讀
//setter 、getter 更改這個方法的名字
//5.有內存管理,用retain OC語言的數據類型可內存管理
// 如 @property( nonatomic , retain ) Dog *dog;
無內存管理 用assign c語言的基礎數據類型無內存管理
//如 @property( nonatomic , assign ) int age;