偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Objective-C內(nèi)存管理教程和原理剖析(三)

移動(dòng)開(kāi)發(fā) iOS
初學(xué)Objective-C的朋友都有一個(gè)困惑,總覺(jué)得對(duì)Objective-C的內(nèi)存管理機(jī)制琢磨不透,程序經(jīng)常內(nèi)存泄漏或莫名其妙的崩潰。我在這里總結(jié)了自己對(duì)Objective-C內(nèi)存管理機(jī)制的研究成果和經(jīng)驗(yàn),寫(xiě)了這么一個(gè)由淺入深的教程。希望對(duì)大家有所幫助,也歡迎大家一起探討。

 

@property (retain)和@synthesize的默認(rèn)實(shí)現(xiàn)

在這里解釋一下@property (retain) ClassB* objB;和@synthesize objB;背后到底發(fā)生了什么(retain property的默認(rèn)實(shí)現(xiàn))。property實(shí)際上是getter和setter,針對(duì)有retain參數(shù)的property,背后的實(shí)現(xiàn)如下(請(qǐng)參考附件中的memman-getter-setter.m,你會(huì)發(fā)現(xiàn),結(jié)果和memman-property.m一樣):

  1. @interface ClassA : NSObject 
  2.          ClassB *objB; 
  3. -(ClassB *) getObjB; 
  4. -(void) setObjB:(ClassB *) value; 
  5. @end 
  6.  
  7. @implementation ClassA 
  8. -(ClassB*) getObjB 
  9.          return objB; 
  10. -(void) setObjB:(ClassB*) value 
  11.          if (objB != value) 
  12.          { 
  13.                    [objB release]; 
  14.                    objB = [value retain]; 
  15.          } 

在setObjB中,如果新設(shè)定的值和原值不同的話,必須要把原值對(duì)象release一次,這樣才能保證retain count是正確的。

由于我們?cè)赾lass內(nèi)部retain了一次(雖然是默認(rèn)實(shí)現(xiàn)的),所以我們要在dealloc方法中release這個(gè)成員變量。

  1. -(void) dealloc 
  2.          [objB release]; 
  3.          [super dealloc]; 

 示例代碼文件鏈接:http://files.cnblogs.com/VinceYuan/objective-c-memman.zip

 

責(zé)任編輯:閆佳明 來(lái)源: oschina
相關(guān)推薦

2011-07-19 15:15:09

Objective-C 內(nèi)存

2011-07-21 09:42:27

Objective-C 內(nèi)存 Autoreleas

2013-04-11 14:37:36

Objective-CiOS內(nèi)存管理系統(tǒng)自動(dòng)創(chuàng)建新的aut

2013-04-11 13:57:27

Objective-CiOS開(kāi)發(fā)內(nèi)存管理

2013-04-11 14:16:57

Objective-CiOS開(kāi)發(fā)內(nèi)存管理

2011-07-18 17:14:16

Objective-C 內(nèi)存 Cocoa

2011-07-29 16:08:31

Objective-C 內(nèi)存

2011-07-27 17:10:30

Objective-C 持久化

2011-05-11 15:45:50

內(nèi)存管理Objective-C

2011-07-20 17:04:43

Objective-C 內(nèi)存 內(nèi)存泄露

2011-07-21 09:32:07

Objective-C 內(nèi)存 Autoreleas

2011-07-21 10:10:42

Objective-C 內(nèi)存 Autoreleas

2011-08-01 11:37:41

iPhone Objective- 內(nèi)存

2011-08-16 17:43:47

Objective-C內(nèi)存管理Autorelease

2011-08-18 13:28:35

Objective-C內(nèi)存

2011-07-08 13:49:46

Objective-C UUID

2011-08-05 14:03:39

Objective-C 對(duì)象 模板

2011-08-22 09:48:16

WindowsObjective-C

2011-08-16 10:23:04

Objective-CNSAutoreleaXcode常用鍵

2013-05-02 10:51:17

iOS開(kāi)發(fā)Objective-C@property
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)