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

了解Objective-C 2.0自動內存管理

移動開發 iOS
本文介紹的是了解Objective-C 2.0自動內存管理,講述了對Objective-C的垃圾收集的內容進行了解,先來看內容。

了解Objective-C 2.0自動內存管理是本文要介紹的內容,Objective-C 2.0***的增強可能就是垃圾收集了(Garbage Collection)。與“垃圾收集”對應的是傳統的引用計數(Reference Count)內存管理形式。

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

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

什么是垃圾收集?

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

傳統的內存管理形式本站已經有所介紹了,所謂垃圾收集主要用于解決內存泄露問題。當你手工建立一個對象,而沒有在不需要的時候釋放它,那么它就保存在內存當中。如果創建了很多對象,那么就需要占用很多內存。

少量的內存泄露不是很大的問題,但是當沒有釋放的內存過多時,就會出現很大的問題了,比如程序運行緩慢、占用內存過大等。 如果你程序在持續運行,這些對象如果沒有在不需要的時候被釋放,那么它們就會慢慢“吃光”你的內存。

垃圾收集對于不知道如何管理內存,但是具有很多好點子并且能夠動手編寫一定程序的人尤為有用。因為他們可以忽略掉麻煩的內存管理,而把大部分時間關注于如何實現一個可以跑起來的好點子。

如何使用垃圾收集?

在項目設置中打開垃圾收集選項即可,如圖所示:

說明

以下介紹關于Objective-C 2.0垃圾收集(簡稱GC)的幾個關鍵點。

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

2、默認XCode是會關閉GC的,要打開的話需要修改項目的Build選項。

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

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

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

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

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

8、蘋果建議***不要同時支持垃圾收集和傳統的引用計數,雖然編譯器允許這樣做。

垃圾收集的好處:

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

2、當時間推移,由于減少了很多工作量和學習門檻,可能會有更多Java或者其他開發人員轉入Objective-C開發。

3、使用舊的引用計數內存管理方式的程序不會因為打開了GC而受到任何影響。

4、如果開發多線程程序,相比從前手工進行內存管理更加簡單。

垃圾收集的壞處:

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

2、可能的性能降低。如果你使用過Java,你可能會對垃圾收集對性能的影響有所了解。不過這僅僅是壞處之一,因為大部分情況下你是不會感覺到使用了GC的程序有什么速度變慢的問題。

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

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

小結:了解Objective-C 2.0自動內存管理的內容介紹完了,希望本文對你有所幫助!

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

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

Objective-C 內存 Cocoa

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-08-05 15:56:03

Objective-C 消息 函數

2011-07-19 15:15:09

Objective-C 內存

2011-07-21 09:42:27

Objective-C 內存 Autoreleas

2011-08-17 15:37:23

Objective-C垃圾收集

2013-04-11 14:37:36

Objective-CiOS內存管理系統自動創建新的aut

2011-07-22 15:10:51

Objective-C 文件

2013-04-11 14:32:00

Objective-CiOS開發內存管理@synthesize

2011-08-17 09:55:45

Objective-CCategory

2011-08-17 10:00:12

Objective-CProperty

2011-08-02 15:55:31

Objective-C NSAutorele

2011-08-04 13:55:10

Cocoa Objective- 文件

2011-08-10 18:07:29

Objective-C反射
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩美女在线看免费观看 | 国产精品一区二区不卡 | 97久久久久久 | a级片在线观看 | 色婷婷综合久久久中字幕精品久久 | 亚洲精品国产电影 | 国产精品久久久久久久久免费桃花 | 日本不卡高字幕在线2019 | 日韩一区在线播放 | 国产区精品视频 | 韩日中文字幕 | yiren22综合网成人 | 91.xxx.高清在线 | 国产午夜精品一区二区三区嫩草 | 伊人久久在线观看 | 一区二区三区中文字幕 | 国产美女精品视频 | 欧美中文字幕一区二区三区 | 国产一区免费视频 | 97天天干| 三级黄色网址 | 亚洲国产成人av好男人在线观看 | 日日干干| 日中文字幕在线 | 三级在线观看 | 亚洲成人高清 | 国产精品黄色 | 狠狠干综合视频 | 亚洲精品一区二区在线观看 | 久久综合一区 | 国产真实精品久久二三区 | 日本一区二区影视 | 狠狠色综合网站久久久久久久 | 天堂网avav | 羞羞视频在线网站观看 | 日本福利在线观看 | 男人久久天堂 | 欧美涩| 久久免费大片 | www国产精品 | 久久午夜精品 |