偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

iPhone開(kāi)發(fā)中如何使內(nèi)存合理使用

移動(dòng)開(kāi)發(fā) iOS
iPhone開(kāi)發(fā)中如何使內(nèi)存合理使用是本文要介紹的內(nèi)容,只要是來(lái)學(xué)習(xí)iphone開(kāi)發(fā)中內(nèi)存的管理。iPhone開(kāi)發(fā)過(guò)程中,內(nèi)存的使用至關(guān)重要。不但要合理分配使用內(nèi)存,還要注意內(nèi)存泄露的問(wèn)題, 因?yàn)閮?nèi)存泄露會(huì)導(dǎo)致程序由于內(nèi)存不足而崩潰。

iPhone開(kāi)發(fā)中如何使內(nèi)存合理使用是本文要介紹的內(nèi)容,只要是來(lái)學(xué)習(xí)iphone開(kāi)發(fā)內(nèi)存的管理。iPhone開(kāi)發(fā)過(guò)程中,內(nèi)存的使用至關(guān)重要。不但要合理分配使用內(nèi)存,還要注意內(nèi)存泄露的問(wèn)題, 因?yàn)?strong>內(nèi)存泄露會(huì)導(dǎo)致程序由于內(nèi)存不足而崩潰。根據(jù)個(gè)人開(kāi)發(fā)的經(jīng)驗(yàn)來(lái)看,在開(kāi)發(fā)iPhone程序的過(guò)程中,關(guān)于內(nèi)存的問(wèn)題需要注意以下幾點(diǎn):

內(nèi)存分配、釋放成對(duì)出現(xiàn)

使用 alloc 分配的內(nèi)存對(duì)象需要在用完后 調(diào)用release釋放

注意copy,retain,assign操作符的區(qū)別

copy, retain操作符賦值的對(duì)象和alloc一樣,需要release釋放,否則會(huì)導(dǎo)致內(nèi)存泄露

assign 操作符的含義是將對(duì)象指向另一對(duì)象, 兩者指向的是同一內(nèi)存對(duì)象,無(wú)需調(diào)用release釋放

NSArray, NSDictionary, NSMutableArray, NSMutableDictionary等容器類, 在使用這些容器類的時(shí)候要注意, 在添加對(duì)象到這些類對(duì)象時(shí),容器類會(huì)自動(dòng)調(diào)用一次retain,比如

  1. NSString* string  = [[NSString alloc] initWithString:@”test string”];  // refCount = 1 
  2. NSArray* array = [NSArray array];  
  3. [array addObject:string]; // refCount = 2 
  4. [string release]; // refCount = 1 

這種情況, 即便string已經(jīng)調(diào)用release,但是在加入 array中時(shí)已經(jīng)調(diào)用了一次retain,注意refCount的變化

簡(jiǎn)單介紹一下iPhone 或者說(shuō)Objective C對(duì)對(duì)象的管理機(jī)制。 OC中采用一種引用計(jì)數(shù)refCount的方式來(lái)管理內(nèi)存對(duì)象,當(dāng)refCount等于0的時(shí)候就會(huì)釋放對(duì)象所占的內(nèi)存, 操作符alloc,copy, retain都會(huì)將refCount加1表示引用計(jì)數(shù)增加, 而調(diào)用release使 refCount自動(dòng)減1, 當(dāng)refCount=0時(shí)表示該對(duì)象已經(jīng)沒(méi)有被引用,可以將其釋放, 之后該對(duì)象便不可用

連續(xù)重復(fù)分配內(nèi)存的過(guò)程***創(chuàng)建自己的自動(dòng)釋放池 NSAutoreleasePool,通常是在for、while等循環(huán)操作過(guò)程中,比如

  1. for( int i=0; i < 100; i++ )  
  2. {  
  3. NSString* str = [[NSString alloc] initWithString:@”some string”];  
  4. // 針對(duì)str的操作  
  5. [str release];  

在這種情況下,有2點(diǎn)需要注意,首先如果可能,就把str的分配、釋放放在for循環(huán)外面, 從而減少內(nèi)存的分配、釋放導(dǎo)致程序效率低下,也利于內(nèi)存回收,如上例應(yīng)該為

  1. NSString* str = [[NSString alloc] initWithString:@”some string”];  
  2. for( int i=0; i < 100; i++ )  
  3. {  
  4. // 針對(duì)str的操作  
  5. }  
  6. [str release]; 

如果實(shí)際情況復(fù)雜,不能像例子中那樣抽離出循環(huán)外,需要?jiǎng)?chuàng)建自己的內(nèi)存管理池, 同樣適用于需要大量autorelease對(duì)象的過(guò)程

  1. NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];  
  2. for(int i=0; i < 100; i++ )  
  3. {  
  4. // actions  
  5. }  
  6. [pool release]; 

之所以要這樣做,是因?yàn)閍pple處理iPhone的內(nèi)存管理機(jī)制問(wèn)題, 通常情況下,系統(tǒng)會(huì)在需要的時(shí)候釋放整理所有的autorelease對(duì)象,這就是為什么有時(shí)候autorelease對(duì)象在作用域范圍外還有可能是有效 的

避免不常用對(duì)象駐留內(nèi)存, 桌面開(kāi)發(fā)的tx很多喜歡在程序初始化的時(shí)候?qū)⒛承┵Y源比如小圖片加載進(jìn)內(nèi)存,從而提高程序運(yùn)行效率。 但這種方式在iPhone以及其它mobile移動(dòng)設(shè)備開(kāi)發(fā)時(shí)需要避免,因?yàn)閷?duì)于這些設(shè)備來(lái)說(shuō),內(nèi)存永遠(yuǎn)顯得不足(當(dāng)然普通pc內(nèi)存也是越大越好:) )。 按照apple的官方說(shuō)法, Load resources lazily . 就是在需要的時(shí)候再?gòu)挠脖P上讀取,而避免常駐內(nèi)存。

小結(jié):iPhone開(kāi)發(fā)中如何使內(nèi)存合理使用的內(nèi)容介紹完了,希望通過(guò)本文的學(xué)習(xí)能對(duì)你有所幫助!

責(zé)任編輯:zhaolei 來(lái)源: starming社區(qū)
相關(guān)推薦

2011-08-17 10:09:25

iPhone開(kāi)發(fā)UIWebViewTouch事件

2011-07-07 15:45:45

iPhone SQLite 數(shù)據(jù)

2011-08-05 16:10:31

iPhone 網(wǎng)絡(luò) NSURLConne

2011-08-22 11:28:46

iPhone開(kāi)發(fā)BMP

2011-08-17 15:10:21

iPhone開(kāi)發(fā)Web視圖

2010-11-05 13:02:58

內(nèi)存iPhone

2016-02-29 10:01:59

iosbug合理

2011-08-05 16:31:47

iPhone 數(shù)據(jù)庫(kù)

2011-08-08 13:50:29

iPhone開(kāi)發(fā) NSOperatio 多線程

2011-08-19 14:14:14

iPhone應(yīng)用

2011-08-08 14:07:49

iPhone開(kāi)發(fā) 字體

2010-10-13 15:59:21

MySQL索引

2014-05-22 10:54:27

iOS開(kāi)發(fā)查找BUG

2011-07-25 17:48:10

iPhone 內(nèi)存

2011-08-10 17:37:00

iPhoneASIHTTPRequ

2011-07-21 15:40:24

iPhone 內(nèi)存管理 對(duì)象

2023-11-27 09:00:00

GPTQ大型語(yǔ)言模型

2011-08-19 14:34:03

iPhone開(kāi)發(fā)

2011-08-09 11:36:41

iPhoneUIPickerVieDEMO

2011-07-18 14:39:53

iPhone SDK UIKit
點(diǎn)贊
收藏

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