成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關于iPhone內存管理總結

移動開發 iOS
本文主要介紹的是對iphone內存管理的一個總結,很詳細的講解了內存需要注意的問題并且如何去解決的方法,來看詳細內容。

iPhone內存管理總結是本文要介紹的內容,iPhone里采用Objective-C開發,相對來說,只要遵循了Apple的一些編程規則,比C++內存管理來的容易些,但是也有很多需要注意的地方,一旦出現內存相關的錯誤,調試也是個很頭疼的問題。

1. 比如出現 EXC_BAD_ACCESS 錯誤,給你的錯誤提示就這個,如何根本沒法知道哪里錯誤了,其實還是有方法知道的,

做如下設置:

  1. Project -> Edit active executable ->Argument  

添加如下四個參數

  1. NSDebugEnabled  
  2. NSZombieEnabled  
  3. MallocStackLogging   
  4. MallocStackLoggingNoCompact 

并都設置為YES。具體如下圖:

iPhone內存管理

這個時候,如果有如下一段代碼:

  1. //重復釋放一個變量   
  2.  NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];  
  3.  NSData* data = [NSData dataWithBytes:"asklaskdxjgr" length:12];  
  4.  [data release];  
  5.  [pool release]; 

再Debug窗口會有如下的提示

  1. 2003-03-18 13:01:38.644 autoreleasebug[3939] *** *** Selector 'release'  
  2. ent to dealloced instance 0xa4e10 of class NSConcreteData. 

雖然也能大致判斷是哪種類型的變量重復釋放了,但信息還不夠多,當項目大,源碼比較多的時候,也不太方便定位,

在console窗口運行如下命令可以得到更多信息:

  1. shell malloc_history <pid> <address>

輸入命令:

  1. shell malloc_history 3939 0xa4e10 

就會出現更多的信息:

  1. [dave@host193 Frameworks]$ malloc_history 3939 0xa4e10  
  2. Call [2] [arg=32]: thread_a0000dec |0x1000 | start | _start | main |  
  3. +[NSData dataWithBytes:length:] | NSAllocateObject | object_getIndexedIvars |  
  4. malloc_zone_calloc   

這個時候就知道具體哪個函數出先問題了,從這里可以看到main里NSData出現問題了。

2、NSArray等集合類的實用問題。

如下面的代碼   

  1. ReleaseTest* rt = [[alloc] init];  
  2. NSMutableArray *array = [[NSMutableArray alloc] init] ;  
  3. [array addObject: rt];  
  4. ReleaseTest *rt2 = [array objectAtIndex:0];  
  5.       [rt2 release];     
  6. [array release];  
  7. [rt release];  

就會導致重復釋放內存問題,因為rt2,獲取的是一個對象的指針,如果已經釋放了的話,rt在釋放的話,就重復了,為了遵循誰Init誰Release的原則,rt2就不應該Release。

3、init 和 Release 的問題。

凡是對象通過Init的方法生成的對象,都需要自己負責Release。

凡不是通過Init的方法生成的對象,不需要負責Release.如[NSString StringWithFormat]方法生成的對象就不需要自己Release,因此自己定義函數,返回一個類的時候,一定要設置為autoRelease 。這樣調用的人就不用操心是否需要釋放對象了。

4、AutoReleasePool里***不要將AutoRelease對象賦值給其它對象,否則離開這個作用域后,對象將會Release掉。

小結:關于iPhone內存管理總結的內容介紹完了,希望通過本文的學習能對你有所幫助,如果你對iphone開發很有興趣的話,請到iphone開發頻道進行更多的學習。

責任編輯:zhaolei 來源: 博客園
相關推薦

2011-06-03 10:19:59

iphone Objective-

2011-08-17 10:16:35

iPhone應用HTTP請求協議

2020-11-20 11:22:08

Linux

2011-07-21 15:40:24

iPhone 內存管理 對象

2011-08-18 10:06:10

2016-01-13 09:19:27

2016-03-03 10:07:39

ios內存管理面試總結

2011-08-15 10:35:43

iPhone開發Atomicnonatomic

2011-08-15 10:45:11

iPhone開發delegate

2012-04-26 21:56:59

iPhone

2010-09-13 08:58:47

自動釋放便捷方法內存管理

2019-09-24 08:56:00

內存Redis使用

2011-07-06 17:40:43

iPhone SDK

2011-07-19 15:33:57

iPhone

2011-08-12 14:39:00

iPhoneSDK

2011-08-18 10:39:46

iPhone開發界面

2011-08-02 17:14:41

iPhone應用 UITableVie

2011-08-05 10:13:45

iPhone開發工具 Cocoa Xcode

2011-08-09 14:24:18

iPhone多線程線程

2011-08-09 17:12:30

iPhoneCFRunLoop
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人国内精品久久久久一区 | 四虎在线观看 | 中文字幕亚洲一区 | av看片网站 | 国产一区二区三区久久久久久久久 | 日韩成人在线视频 | 亚洲一区二区三区在线 | 亚洲成人av在线 | 久久国产精品视频 | 免费观看一级特黄欧美大片 | 国产综合网址 | 99精品视频一区二区三区 | 日本在线中文 | 欧美日韩亚 | 91在线成人 | 国产伦精品一区二区三区视频金莲 | 精品国产欧美日韩不卡在线观看 | 久久91精品国产一区二区 | 成人在线视频一区二区三区 | 污视频在线免费观看 | 欧美亚洲综合久久 | 中文欧美日韩 | 日日摸夜夜添夜夜添精品视频 | 在线视频一区二区三区 | 亚洲综合色视频在线观看 | xxxxx黄色片 欧美一区免费 | 久久成人18免费网站 | 精品国产一区二区三区久久影院 | 久久综合九色综合欧美狠狠 | 一区二区三区中文字幕 | 色站综合 | 99精品视频免费观看 | 日韩视频a| 中文字幕在线观看第一页 | 日韩在线播放中文字幕 | 亚洲欧洲av在线 | www.亚洲视频 | 黄色成人国产 | 一区二区在线 | 午夜精品久久久久久久星辰影院 | 国产又色又爽又黄又免费 |