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

Objective C內存管理之實踐準則

開發 后端
這是一系列關于Objective C內存管理的文章,主要是面向iPhone開發人員,希望對大家做好蘋果手機的移動開發有所幫助。

這個系列打算寫一些我對iPhone開發內存管理的理解。是建立在讀者對Objective C的內存管理已經有一定理解的基礎上,內容將包括實踐準則,autorelease原理剖析,內存泄露的調試等。如果您對Objective C內存管理不太了解,建議先讀一下Vince Yuan的這個教程。

[[13089]]

在進行iPhone開發時, 內存管理是個相對比較難以理解的東西。Objective-C 使用了一種介于C#和C++之間的內存管理機制。C#是基于Mark-sweep的GC,C++基本上是程序員自己負責分配和釋放。Ojbective-C,是程序員來負責Mark(通過Release, retain, alloc)計數, 系統來進行分配和釋放。下面是一些準則,可以避免內存泄露和使用已釋放的內存造成程序crash。

1)你必須為你自己創建的Object負責。包括alloc, newObject,mutableCopy 等,或者是你調用過retain的object。對于這些Object, 你必須調用release 或autorelease

2)對于其它函數返回的Object,你不能release它,原則上應該由被調用的函數來負責。e.g. NSString str = [NSString stringWithFormat:].  你自己寫的函數也最好遵循這個準則,誰申請,誰釋放,而不要讓調用者來釋放。

3)如果你要在某個對象的property里存儲另外一個對象,你必須retain或者copy它,避免它被別人release。

@property(retain)。。 這里的retain關鍵字會自動做這個事情。如果你自己聲明set方法就要手動做這個事情。

4)autorelease 意味著該object會由系統在某個時機release它。

5)確保你返回的object是有效的。在如下例子中, 因為heisenObject 被從array中remove掉,會有一個release message到heisenObject,如果沒有其它人reference它, heisenObject會被dealloc 掉。

  1. heisenObject = [array objectAtIndex:n];  
  2. [array removeObjectAtIndex:n];  
  3. // heisenObject could now be invalid. 

6) weak reference.   如下圖, Document 類中Page property 指向Page類的對象, page類中Parent property指向Document, 這樣如果互相之間的retain count都是1的話,那么這兩個object永遠不會被Dealloc。 解決辦法是把page.parent變為weak reference,也就是說, page.parent并不retain Document。  UITableView.datasource, notification observers, delegates, outline view items 等都是week reference。

     

原文標題:Objective C內存管理進階(一):實踐準則

鏈接:http://www.cnblogs.com/MobileDevelop/archive/2010/07/19/1779755.html

【編輯推薦】

  1. 效仿iPhone 蘋果推出全新Mac軟件開發服務
  2. Android叫陣iPhone 2010年軟件應用數超15萬
  3. iPhone應用程序數量預計2010年將達到30萬個
  4. 蘋果為擺脫谷歌招iPhone地圖軟件開發者
  5. 月入40萬 iPhone中文應用程序開發者訪談
責任編輯:楊鵬飛 來源: 博客園
相關推薦

2011-07-21 10:10:42

Objective-C 內存 Autoreleas

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-18 17:14:16

Objective-C 內存 Cocoa

2010-07-20 08:50:00

autoreleaseObjective C

2011-08-01 11:37:41

iPhone Objective- 內存

2011-08-16 17:43:47

Objective-C內存管理Autorelease

2011-07-29 16:08:31

Objective-C 內存

2011-08-18 13:28:35

Objective-C內存

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內存管理系統自動創建新的aut

2013-04-11 14:32:00

Objective-CiOS開發內存管理@synthesize

2011-07-28 18:11:18

Objective-C Cocoa 編程

2013-04-11 14:16:57

Objective-CiOS開發內存管理

2011-07-22 15:42:39

Objective-C UIView 內存

2015-07-08 10:51:27

Objective-CRuntime

2009-12-07 14:53:07

RHEL網絡安裝

2013-04-11 13:57:27

Objective-CiOS開發內存管理
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品一二区 | 精品一区二区久久久久久久网站 | 亚洲成人中文字幕 | 一区二区三区回区在观看免费视频 | 国产成人精品免费视频大全最热 | 日韩午夜电影在线观看 | 日韩欧美在线播放 | 精品久久久久一区二区国产 | 欧美一区视频 | 看a级黄色毛片 | 精品粉嫩aⅴ一区二区三区四区 | 国产精品一区二区在线 | 91视频在线网站 | 99热这里都是精品 | 99pao成人国产永久免费视频 | 国产成人精品一区二区三 | 国产精品久久久久久妇女6080 | 一二三四在线视频观看社区 | 天天想天天干 | 久久中文字幕一区 | 激情欧美日韩一区二区 | 亚洲一区综合 | 欧美一区二区三区 | 欧美精品一区二区三区蜜桃视频 | 午夜影视在线观看 | 日本五月婷婷 | 性色视频在线观看 | 中文字幕高清免费日韩视频在线 | 国产91在线播放精品91 | 伊人伊成久久人综合网站 | 亚洲欧美在线观看视频 | 欧美福利| 国产精品揄拍一区二区 | 精品综合久久久 | 天天射影院 | jizz18国产| 91在线精品秘密一区二区 | 日本精品久久 | 天天弄 | 国产欧美精品在线 | 天天色天天色 |