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

iPhone開發中如何使內存合理使用

移動開發 iOS
iPhone開發中如何使內存合理使用是本文要介紹的內容,只要是來學習iphone開發中內存的管理。iPhone開發過程中,內存的使用至關重要。不但要合理分配使用內存,還要注意內存泄露的問題, 因為內存泄露會導致程序由于內存不足而崩潰。

iPhone開發中如何使內存合理使用是本文要介紹的內容,只要是來學習iphone開發內存的管理。iPhone開發過程中,內存的使用至關重要。不但要合理分配使用內存,還要注意內存泄露的問題, 因為內存泄露會導致程序由于內存不足而崩潰。根據個人開發的經驗來看,在開發iPhone程序的過程中,關于內存的問題需要注意以下幾點:

內存分配、釋放成對出現

使用 alloc 分配的內存對象需要在用完后 調用release釋放

注意copy,retain,assign操作符的區別

copy, retain操作符賦值的對象和alloc一樣,需要release釋放,否則會導致內存泄露

assign 操作符的含義是將對象指向另一對象, 兩者指向的是同一內存對象,無需調用release釋放

NSArray, NSDictionary, NSMutableArray, NSMutableDictionary等容器類, 在使用這些容器類的時候要注意, 在添加對象到這些類對象時,容器類會自動調用一次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已經調用release,但是在加入 array中時已經調用了一次retain,注意refCount的變化

簡單介紹一下iPhone 或者說Objective C對對象的管理機制。 OC中采用一種引用計數refCount的方式來管理內存對象,當refCount等于0的時候就會釋放對象所占的內存, 操作符alloc,copy, retain都會將refCount加1表示引用計數增加, 而調用release使 refCount自動減1, 當refCount=0時表示該對象已經沒有被引用,可以將其釋放, 之后該對象便不可用

連續重復分配內存的過程***創建自己的自動釋放池 NSAutoreleasePool,通常是在for、while等循環操作過程中,比如

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

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

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

如果實際情況復雜,不能像例子中那樣抽離出循環外,需要創建自己的內存管理池, 同樣適用于需要大量autorelease對象的過程

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

之所以要這樣做,是因為apple處理iPhone的內存管理機制問題, 通常情況下,系統會在需要的時候釋放整理所有的autorelease對象,這就是為什么有時候autorelease對象在作用域范圍外還有可能是有效 的

避免不常用對象駐留內存, 桌面開發的tx很多喜歡在程序初始化的時候將某些資源比如小圖片加載進內存,從而提高程序運行效率。 但這種方式在iPhone以及其它mobile移動設備開發時需要避免,因為對于這些設備來說,內存永遠顯得不足(當然普通pc內存也是越大越好:) )。 按照apple的官方說法, Load resources lazily . 就是在需要的時候再從硬盤上讀取,而避免常駐內存。

小結:iPhone開發中如何使內存合理使用的內容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: starming社區
相關推薦

2011-08-17 10:09:25

iPhone開發UIWebViewTouch事件

2011-07-07 15:45:45

iPhone SQLite 數據

2011-08-05 16:10:31

iPhone 網絡 NSURLConne

2011-08-22 11:28:46

iPhone開發BMP

2011-08-17 15:10:21

iPhone開發Web視圖

2010-11-05 13:02:58

內存iPhone

2016-02-29 10:01:59

iosbug合理

2011-08-05 16:31:47

iPhone 數據庫

2011-08-08 13:50:29

iPhone開發 NSOperatio 多線程

2011-08-19 14:14:14

iPhone應用

2011-08-08 14:07:49

iPhone開發 字體

2010-10-13 15:59:21

MySQL索引

2014-05-22 10:54:27

iOS開發查找BUG

2011-07-25 17:48:10

iPhone 內存

2011-08-10 17:37:00

iPhoneASIHTTPRequ

2011-07-21 15:40:24

iPhone 內存管理 對象

2023-11-27 09:00:00

GPTQ大型語言模型

2011-08-19 14:34:03

iPhone開發

2011-08-09 11:36:41

iPhoneUIPickerVieDEMO

2011-07-18 14:39:53

iPhone SDK UIKit
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲欧美在线一区 | 激情黄色在线观看 | 国产精品18毛片一区二区 | 亚洲一区 | 日韩av在线免费 | 麻豆视频在线免费观看 | 日韩成人在线视频 | av在线免费网 | 国产一级一级 | 成人欧美一区二区三区白人 | 欧美日韩在线免费 | www.久久.com| 日本在线一区二区三区 | 一级片在线观看 | 一区二区精品在线 | 亚洲精品久久久久avwww潮水 | 欧美日韩精品 | 福利视频网 | 少妇一级淫片aaaaaaaaa | 国产一区二区三区四区五区加勒比 | 亚洲国产成人久久综合一区,久久久国产99 | 日韩精品在线看 | 欧美自拍另类 | 麻豆久久久久久久 | 午夜国产 | 欧美精品在线一区 | 国产视频中文字幕在线观看 | 亚洲精品日韩精品 | 久久久免费少妇高潮毛片 | 激情网五月天 | 久久精品中文字幕 | 国产女人精品视频 | 欧美日韩在线不卡 | 一级毛片黄片 | 91亚洲一区 | 四虎永久免费黄色影片 | 日韩欧美第一页 | 国产精品美女久久久久久久久久久 | 亚洲成人www | 999久久久久久久久6666 | 免费国产网站 |