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

關(guān)于Objective-C 2.0垃圾收集介紹

移動開發(fā) iOS
iPhone的操作系統(tǒng)目前并不支持垃圾收集,如果你希望做iPhone開發(fā)或者希望你的程序在未來移植到iPhone,盡量不要在程序中使用垃圾收集。

Objective-C 2.0垃圾收集是本文要介紹的內(nèi)容,主要是來學(xué)習(xí)Objective-C 2.0垃圾收集的問題,具體內(nèi)容先來先本文詳解。Objective-C 2.0***的增強(qiáng)可能就是垃圾收集了(Garbage Collection)。與“垃圾收集”對應(yīng)的是傳統(tǒng)的引用計(jì)數(shù)(Reference Count)內(nèi)存管理形式。

使用了垃圾收集意味著大部分情況下《Very simple rules for memory management in Cocoa >>所介紹的工作你在程序中都不需要做了,系統(tǒng)會自動幫你管理好這些問題。如果你沒有閱讀過《Very simple rules for memory management in Cocoa >>,請先閱讀一下。否則你可能不知道“垃圾收集”說的到底是什么。

另外,iPhone的操作系統(tǒng)目前并不支持垃圾收集,如果你希望做iPhone開發(fā)或者希望你的程序在未來移植到iPhone,盡量不要在程序中使用垃圾收集。

什么是垃圾收集?

簡單說來,垃圾收集可以被認(rèn)為是“自動內(nèi)存管理”的意思,就是說內(nèi)存中不再使用的對象會被稱做“垃圾”,垃圾收集的作用就是幫你自動釋放掉這些“垃圾”以免程序占用過多不必要的內(nèi)存。

傳統(tǒng)的內(nèi)存管理形式本站已經(jīng)有所介紹了,所謂垃圾收集主要用于解決內(nèi)存泄露問題。當(dāng)你手工建立一個(gè)對象,而沒有在不需要的時(shí)候釋放它,那么它就保存在內(nèi)存當(dāng)中。如果創(chuàng)建了很多對象,那么就需要占用很多內(nèi)存。少量的內(nèi)存泄露不是很大的問題,但是當(dāng)沒有釋放的內(nèi)存過多時(shí),就會出現(xiàn)很大的問題了,比如程序運(yùn)行緩慢、占用內(nèi)存過大等。 如果你程序在持續(xù)運(yùn)行,這些對象如果沒有在不需要的時(shí)候被釋放,那么它們就會慢慢“吃光”你的內(nèi)存。

垃圾收集對于不知道如何管理內(nèi)存,但是具有很多好點(diǎn)子并且能夠動手編寫一定程序的人尤為有用。因?yàn)樗麄兛梢院雎缘袈闊┑膬?nèi)存管理,而把大部分時(shí)間關(guān)注于如何實(shí)現(xiàn)一個(gè)可以跑起來的好點(diǎn)子。

如何使用垃圾收集?

在項(xiàng)目設(shè)置中打開垃圾收集選項(xiàng)即可,如圖所示。

關(guān)于Objective-C 2.0垃圾收集介紹

說明

以下介紹關(guān)于Objective-C 2.0垃圾收集(簡稱GC)的幾個(gè)關(guān)鍵點(diǎn)。

1、由于垃圾收集包含在Objective-C 2.0 runtime庫里,所以如果你的程序使用了垃圾收集,那么只能跑在Leopard及以后版本上。

2、默認(rèn)XCode是會關(guān)閉GC的,要打開的話需要修改項(xiàng)目的Build選項(xiàng)。

3、gcc打開垃圾收集的參數(shù)是:-fobjc-gc

4、Core Foundation對象也同樣支持垃圾收集

5、打開垃圾收集后,retain、release和autorelease將不再工作。但是如果你的程序中包括這些內(nèi)存管理方法,打開GC并不會影響你的程序。

6、如果你的Objective-C 程序和C、C++共存,那么你可以在用Objective-C的時(shí)候不考慮內(nèi)存釋放,但是在C或者C++時(shí)還是必須考慮內(nèi)存釋放的問題。

7、如果在打開垃圾收集的情況下明確需要釋放某個(gè)對象,使用-finalize方法。

8、蘋果建議***不要同時(shí)支持垃圾收集和傳統(tǒng)的引用計(jì)數(shù),雖然編譯器允許這樣做。

垃圾收集的好處:

1、對懶人或者初學(xué)者來說,你可以不用再考慮對象是否釋放和什么時(shí)候釋放。這意味著你可以節(jié)省更多時(shí)間,同時(shí)減少出錯(cuò)和內(nèi)存泄露的可能。

2、當(dāng)時(shí)間推移,由于減少了很多工作量和學(xué)習(xí)門檻,可能會有更多Java或者其他開發(fā)人員轉(zhuǎn)入Objective-C開發(fā)。

3、使用舊的引用計(jì)數(shù)內(nèi)存管理方式的程序不會因?yàn)榇蜷_了GC而受到任何影響。

4、如果開發(fā)多線程程序,相比從前手工進(jìn)行內(nèi)存管理更加簡單。

垃圾收集的壞處:

1、如果你想讓程序兼容Tiger,那么你就沒法使用垃圾收集,還是要用引用計(jì)數(shù)的形式編寫程序。

2、可能的性能降低。如果你使用過Java,你可能會對垃圾收集對性能的影響有所了解。不過這僅僅是壞處之一,因?yàn)榇蟛糠智闆r下你是不會感覺到使用了GC的程序有什么速度變慢的問題。

3、如果你希望某個(gè)對象長期保存而不被釋放,可能需要將其做為全局變量。

4、正如本文前面提到的,iPhone并不支持垃圾收集。如果你希望程序未來兼容iPhone,那么不要考慮使用垃圾收集。

小結(jié):關(guān)于Objective-C 2.0垃圾收集介紹的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對你有所幫助!

責(zé)任編輯:zhaolei 來源: 博客園
相關(guān)推薦

2011-08-04 15:14:39

Objective-C 數(shù)據(jù)類型

2011-08-15 17:29:36

Objective-C構(gòu)造函數(shù)

2011-08-01 11:37:41

iPhone Objective- 內(nèi)存

2011-08-17 10:00:12

Objective-CProperty

2011-08-17 09:55:45

Objective-CCategory

2011-07-20 13:34:37

Objective-C self.

2011-08-15 14:02:36

Objective-C

2011-08-10 18:07:29

Objective-C反射

2013-06-20 10:40:32

Objective-C實(shí)現(xiàn)截圖

2013-03-27 12:54:00

iOS開發(fā)Objective-C

2011-05-11 15:58:34

Objective-C

2011-05-11 11:20:26

Objective-C

2011-08-04 16:46:03

Objective-C 聲明

2011-05-11 13:54:08

Objective-C

2011-05-11 15:45:50

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

2011-08-02 13:16:36

Objective-C 語法 函數(shù)

2011-08-04 11:15:46

Objective-C 構(gòu)造函數(shù) 構(gòu)造方法

2011-05-11 14:06:49

Objective-C

2011-08-04 14:58:37

Objective-C Cocoa NSString

2013-08-21 14:57:42

objective-c問題
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 日韩视频在线一区 | 亚洲精品一区二区在线观看 | 欧美一级黄色免费看 | 91av在线免费观看 | 欧美日一区 | 国产成人99久久亚洲综合精品 | 中文字幕在线免费 | 精品无码三级在线观看视频 | 日本黄色影片在线观看 | 亚洲精品久久久久中文字幕欢迎你 | 亚洲视频一区在线观看 | 国产成人精品网站 | 97精品国产 | 亚洲福利在线视频 | 国产精品精品3d动漫 | 亚洲欧美一区二区三区国产精品 | 99亚洲| 麻豆av片 | 免费特黄视频 | 一区二区三区影院 | 成人免费在线视频 | 国产精品无 | h片在线免费观看 | 欧美亚州综合 | 国产在线一区二区三区 | 亚洲免费人成在线视频观看 | 国产成人久久av免费高清密臂 | 午夜影院黄 | 狠狠操婷婷| 亚洲精品视频免费看 | 看毛片网站 | 日韩成人一区 | 欧美国产亚洲一区二区 | 国产精品国产三级国产aⅴ中文 | 在线免费观看a级片 | 国产精品精品久久久久久 | 亚洲免费在线视频 | 国产aaaaav久久久一区二区 | 精品日韩一区二区三区 | 91精品国产91久久久久久吃药 | 蜜桃视频一区二区三区 |