自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Cocoa內(nèi)存管理規(guī)則與垃圾回收

移動(dòng)開發(fā) iOS
Cocoa內(nèi)存管理規(guī)則與垃圾回收是本文要介紹的內(nèi)容,主要是來(lái)學(xué)習(xí)如何來(lái)解決cocoa內(nèi)存管理的問(wèn)題。不多說(shuō),直接來(lái)看詳細(xì)內(nèi)容詳解。

Cocoa內(nèi)存管理規(guī)則與垃圾回收是本文要介紹的內(nèi)容,主要是來(lái)學(xué)習(xí)如何來(lái)解決cocoa內(nèi)存管理的問(wèn)題。不多說(shuō),直接來(lái)看詳細(xì)內(nèi)容詳解。

Cocoa內(nèi)存管理規(guī)則

(1)當(dāng)你使用new、alloc、copy方法創(chuàng)建一個(gè)對(duì)象時(shí),該對(duì)象的保留計(jì)數(shù)器值為1.當(dāng)不再使用該對(duì)象時(shí),你要負(fù)責(zé)向該對(duì)象發(fā)送一條release或autorelease消息。這樣,該對(duì)象將在其使用壽命結(jié)束時(shí)被銷毀。

(2)當(dāng)你通過(guò)其他方法獲得一個(gè)對(duì)象時(shí),這假設(shè)該對(duì)象的保留計(jì)數(shù)器值為1,而且已經(jīng)被設(shè)置為自動(dòng)釋放,你不需要執(zhí)行任何操作來(lái)確保該對(duì)象被清理。如果你打算在一段時(shí)間內(nèi)擁有該對(duì)象,這需要保留它并確保在操作完成時(shí)釋放它。

(3)如果你保留了某個(gè)對(duì)象,你需要(最終)釋放或自動(dòng)釋放該對(duì)象。必須保持retain方法和release方法的使用次數(shù)相等。

“如果我使用了new、alloc或copy方法獲得一個(gè)對(duì)象,則我必須釋放或自動(dòng)釋放該對(duì)象。”只要你記住了這條規(guī)律,你就平安無(wú)事了。

無(wú)論什么時(shí)候擁有一個(gè)對(duì)象,有兩間事情必須弄清楚:怎樣獲得該對(duì)象的?打算擁有該對(duì)象多長(zhǎng)時(shí)間。

例如:

  1. NSMutableArray *array;array = [[NSMutableArray alloc] init]; //count: 1// use the array[array release]; // count: 0 

上例中使用alloc方法獲得了array,所以需要安排該對(duì)象的釋放([array release])

又如:

  1. NSMutableArray *array;array = [NSMutableArray arrayWIthCapacity: 17];// count: 1, autoreleased// use the array 

上例中的arrayWithCapacity: 方法不屬于alloc、new、copy中的任何一個(gè),因此可以假設(shè)該對(duì)象被返回時(shí)保留計(jì)數(shù)器值為1而且已經(jīng)被設(shè)置為自動(dòng)釋放。你不需要顯示釋放array。

垃圾回收(garbage collection)

Objective-C2.0引入了自動(dòng)內(nèi)存管理機(jī)制,也稱垃圾回收。對(duì)于已經(jīng)創(chuàng)建和使用的對(duì)象,當(dāng)你忘記清理它們時(shí),系統(tǒng)會(huì)自動(dòng)識(shí)別哪些對(duì)象仍在使用,哪些對(duì)象可以回收。

垃圾回收是一種可選擇啟用的功能,啟用方法是:在菜單選擇Project | Edit Project Settings進(jìn)入項(xiàng)目信息窗口,搜索“garb”,選擇Required[-fobjc-gc-only]選項(xiàng)即可。如下圖所示:

Cocoa內(nèi)存管理規(guī)則與垃圾回收

“-fobjc-gc”選項(xiàng)是為了使代碼即支持垃圾回收又支持對(duì)象的保留和釋放。

啟用垃圾回收后,通常的內(nèi)存管理命令全部變成了空操作指令,不執(zhí)行任何操作。

注意:如果開發(fā)iPhone軟件,則不能使用垃圾回收。實(shí)際上,在編寫iPhone程序時(shí),蘋果公司建議你不要在自己的代碼中使用autorelease方法,同時(shí)還要避免使用創(chuàng)建自動(dòng)釋放對(duì)象的便利函數(shù)。

小結(jié):Cocoa內(nèi)存管理規(guī)則與垃圾回收的內(nèi)容介紹完了,希望本文能對(duì)你有所幫助!

責(zé)任編輯:zhaolei 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2009-09-02 09:23:26

.NET內(nèi)存管理機(jī)制

2014-12-19 11:07:40

Java

2023-12-19 21:52:51

Go垃圾回收開發(fā)

2024-02-04 09:18:00

Python內(nèi)存管理垃圾回收

2017-08-04 10:53:30

回收算法JVM垃圾回收器

2010-09-26 16:42:04

JVM內(nèi)存組成JVM垃圾回收

2023-02-28 07:56:07

V8內(nèi)存管理

2023-05-31 09:00:00

2017-02-21 16:40:16

Android垃圾回收內(nèi)存泄露

2017-04-25 14:39:55

JVM內(nèi)存Java

2013-10-11 17:32:18

Linux運(yùn)維內(nèi)存管理

2011-07-28 11:12:25

Cocoa 內(nèi)存

2009-12-09 17:28:34

PHP垃圾回收機(jī)制

2019-06-24 19:00:09

JavaScript內(nèi)存泄漏垃圾回收

2021-01-04 10:08:07

垃圾回收Java虛擬機(jī)

2022-01-20 10:34:49

JVM垃圾回收算法

2011-07-26 15:14:24

蘋果 Cocoa 內(nèi)存

2023-05-12 07:38:46

Python基準(zhǔn)測(cè)試性能分析

2022-03-21 11:33:11

JVM垃圾回收器垃圾回收算法

2011-07-07 09:54:01

Cocoa Core Foundation
點(diǎn)贊
收藏

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