OC 內存管理-----MRC(手動釋放內存)

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];

 //給人設置狗對象後,狗被引用一次 , 此時dogretainCount2

    [person1 setDog:dog];


//類的類屬性,設置和獲取,setget,如今能夠簡便化:

    //@property \ @synthesize

    //noatomic 高性能  atomic 低性能

    //retain 表明針對於這個對象計數器+1

    //readonly  表明對象只讀

    //setter getter 更改這個方法的名字

    //assign 賦值經過針對於簡單的數據類型


 //3.釋放內存用dealloc,通常在.m文件中實現 [super dealloc],只要調用對象的release方法,就會進入dealloc;

    

//4.類的類屬性,setget,如今能夠簡化爲:@property @synthesize

    //noatomic 高性能  atomic 低性能 readonly  表明對象只讀

    //setter getter 更改這個方法的名字

   

//5.有內存管理,用retain  OC語言的數據類型可內存管理

   // @property( nonatomic , retain ) Dog *dog;

    

  無內存管理 assign  c語言的基礎數據類型無內存管理

  // @property( nonatomic , assign ) int age;

相關文章
相關標籤/搜索