成人免费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

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

2011-07-06 17:40:43

iPhone SDK

2019-09-24 08:56:00

內存Redis使用

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

2010-06-07 13:53:06

Linux 內存監控

2011-08-05 10:13:45

iPhone開發工具 Cocoa Xcode

2011-08-09 14:24:18

iPhone多線程線程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天堂综合 | 日韩视频三区 | 日韩在线视频一区 | 欧美一a| 日本精品一区二区三区视频 | 久久久精品一区二区三区四季av | 夜久久| 91视频麻豆| 色av一区二区三区 | 日韩一区二 | 91在线免费视频 | 亚洲一区二区中文字幕 | 99福利在线观看 | 日韩精品免费一区二区在线观看 | 日本特黄a级高清免费大片 特黄色一级毛片 | 看黄在线| 中文字幕一区二区三区在线观看 | 色性av| 久久er99热精品一区二区 | 99精品免费久久久久久久久日本 | 欧美成人a| 在线观看免费国产 | 婷婷色网 | 国产清纯白嫩初高生在线播放视频 | 一区二区三区观看视频 | 一区二区三区国产在线观看 | 亚洲一区二区三区四区五区中文 | 四虎影院免费在线播放 | 中文字幕在线观看国产 | 亚洲成av人片在线观看 | 久草青青草 | 91精品久久久久久久久久入口 | 午夜影院操 | 搞黄网站在线观看 | 日韩免费看片 | 精品国产一区二区三区免费 | 91在线视频观看免费 | 国产91丝袜在线18 | 亚洲视频一区在线观看 | 中文字幕日本一区二区 | 日韩a在线 |