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

了解Objective-C中NSAutoreleasePool使用方法

移動(dòng)開(kāi)發(fā) iOS
本文主要是來(lái)介紹Objective-C中NSAutoreleasePool,NSAutoreleasePool是什么?它實(shí)際上是個(gè)對(duì)象引用計(jì)數(shù)自動(dòng)處理器,先來(lái)看本文詳細(xì)內(nèi)容的講解。

本文的目的是來(lái)了解Objective-CNSAutoreleasePool使用方法,Objective-C的Foundation庫(kù)實(shí)際上是種運(yùn)行級(jí)對(duì)象系統(tǒng),與一般的對(duì)象語(yǔ)言,例如C++,Java不一樣,而與COM或者Corba一樣,對(duì)象,不一定創(chuàng)建在用戶應(yīng)用程序的地址空間中,有可能是創(chuàng)建在另一個(gè)地址空間中,甚至創(chuàng)建在別的機(jī)器上!

所以,Objective-C的對(duì)象(全部繼承自NSObject),就是使用引用計(jì)數(shù)的方法來(lái)管理對(duì)象的存活,眾所周知,當(dāng)引用計(jì)數(shù)為0時(shí),對(duì)象就被銷毀了。操作非常簡(jiǎn)單,當(dāng)對(duì)象被創(chuàng)建時(shí),引用計(jì)數(shù)被設(shè)成1??梢越o對(duì)象發(fā)送retain消息,讓對(duì)象對(duì)自己的引用計(jì)數(shù)加1。

而當(dāng)對(duì)象接受到release消息時(shí),對(duì)象就會(huì)對(duì)自己的引用計(jì)數(shù)進(jìn)行減1,當(dāng)引用計(jì)數(shù)到了0,對(duì)象就會(huì)呼叫自己的dealloc處理,一切都需要程序員親力親為,一點(diǎn)馬虎不得。

可是,NSAutoreleasePool是什么?它實(shí)際上是個(gè)對(duì)象引用計(jì)數(shù)自動(dòng)處理器。

首先,NSAutoreleasePool可以同時(shí)有多個(gè),它的組織是個(gè)棧,總是存在一個(gè)棧頂pool,也就是當(dāng)前pool,每創(chuàng)建一個(gè)pool,就往棧里壓一個(gè),改變當(dāng)前pool為新建的pool,然后,每次給pool發(fā)送drain消息,就彈出棧頂?shù)膒ool,改當(dāng)前pool為棧里的下一個(gè)pool。

接下來(lái)要注意,對(duì)象,并不是自動(dòng)被加入到當(dāng)前pool中,而是需要對(duì)對(duì)象發(fā)送autorelease消息,這樣,對(duì)象就被加到當(dāng)前pool的管理里了。

當(dāng)當(dāng)前pool接受到drain消息時(shí),它就簡(jiǎn)單的對(duì)它所管理的所有對(duì)象發(fā)送release消息。

到了這里,一定會(huì)發(fā)現(xiàn)這個(gè)所謂的pool有個(gè)坑人的特性,即,如果pool中被管理的對(duì)象接受到pool發(fā)送的那個(gè)release消息后,它的引用計(jì)數(shù)大于0,那么pool雖然消失了,但是那個(gè)對(duì)象還是存在的!

小結(jié):了解Objective-CNSAutoreleasePool的內(nèi)容介紹完了,希望本文對(duì)你有所幫助!

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

2011-07-19 17:18:35

Objective-C Property

2011-08-10 17:16:01

Objective-C靜態(tài)變量

2011-08-22 15:31:35

Objective-C協(xié)議

2011-08-10 11:08:32

Objective-C字符串NSString

2011-08-15 17:47:13

Objective-CisMemberOfC

2011-08-17 11:05:22

Objective-C方法

2011-08-05 15:56:03

Objective-C 消息 函數(shù)

2011-08-01 11:37:41

iPhone Objective- 內(nèi)存

2011-07-27 16:18:42

Objective-c 協(xié)議

2011-07-22 15:10:51

Objective-C 文件

2011-07-26 10:50:50

Objective-C Selector

2011-08-04 13:32:21

Objective-C 方法 對(duì)象

2011-08-10 18:07:29

Objective-C反射

2011-07-25 10:14:13

Objective-C Xcode

2011-07-25 10:30:41

Objective-C Xcode 重構(gòu)

2011-07-25 11:02:29

Objective-C Xcode 標(biāo)簽

2011-08-04 13:55:10

Cocoa Objective- 文件

2011-07-20 13:34:37

Objective-C self.

2013-03-27 12:54:00

iOS開(kāi)發(fā)Objective-C

2011-05-11 11:20:26

Objective-C
點(diǎn)贊
收藏

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