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

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

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

 

@property (retain)和@synthesize的默認實現

在這里解釋一下@property (retain) ClassB* objB;和@synthesize objB;背后到底發(fā)生了什么(retain property的默認實現)。property實際上是getter和setter,針對有retain參數的property,背后的實現如下(請參考附件中的memman-getter-setter.m,你會發(fā)現,結果和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中,如果新設定的值和原值不同的話,必須要把原值對象release一次,這樣才能保證retain count是正確的。

由于我們在class內部retain了一次(雖然是默認實現的),所以我們要在dealloc方法中release這個成員變量。

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

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

 

責任編輯:閆佳明 來源: oschina
相關推薦

2011-07-19 15:15:09

Objective-C 內存

2011-07-21 09:42:27

Objective-C 內存 Autoreleas

2013-04-11 14:37:36

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

2013-04-11 13:57:27

Objective-CiOS開發(fā)內存管理

2013-04-11 14:16:57

Objective-CiOS開發(fā)內存管理

2011-07-18 17:14:16

Objective-C 內存 Cocoa

2011-07-29 16:08:31

Objective-C 內存

2011-07-27 17:10:30

Objective-C 持久化

2011-05-11 15:45:50

內存管理Objective-C

2011-07-20 17:04:43

Objective-C 內存 內存泄露

2011-07-21 09:32:07

Objective-C 內存 Autoreleas

2011-07-21 10:10:42

Objective-C 內存 Autoreleas

2011-08-01 11:37:41

iPhone Objective- 內存

2011-08-16 17:43:47

Objective-C內存管理Autorelease

2011-08-18 13:28:35

Objective-C內存

2011-07-08 13:49:46

Objective-C UUID

2011-08-05 14:03:39

Objective-C 對象 模板

2011-08-22 09:48:16

WindowsObjective-C

2011-08-16 10:23:04

Objective-CNSAutoreleaXcode常用鍵

2013-05-02 10:51:17

iOS開發(fā)Objective-C@property
點贊
收藏

51CTO技術棧公眾號