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

iOS基本內存管理:autorelease和autoreleasepool

移動開發 iOS
在內存管理的Objective-C代碼里,一個Cocoa對象存在于一個生命周期,有明確的階段。它被創建,初始化,并使用(也就是,其它對象發送消息給它)。它還可能會被保留,拷貝,或壓縮,并最終被釋放和銷毀。

[[109762]]

1.autorelease 基本用法

  • 對象執行autorelease方法時會將對象添加到自動釋放池中
  • 當自動釋放池銷毀時自動釋放池中所有對象作release操作
  • 對象執行autorelease方法后自身引用計數器不會改變,而且會返回對象本身

2.autorelease 的優點

  • autorelease實際上只是把對release的調用延遲了,對于每一次autorelease系統只是把該對象放入了當前的autorelease pool中,當該pool被釋放時,該pool中的所有對象會被調用Release
  • 因為只有在自動釋放池銷毀的時候它里面的對象才銷毀,因此不用關心對象銷毀的時間也就不用關心什么時候調用release

3.autorelease 使用注意

  • 操作占用內存比較大的對象的時候不要隨便使用,擔心對象釋放的時間太遲
  • 操作占用內存比較小的對象可以使用

4.atureleasepool自動釋放池

自動釋放池存儲于內存中的棧中遵循"先進后出"原則

  1. #import <Foundation/Foundation.h> 
  2. #import "Person.h" 
  3. int main(int argc, const char * argv[]) 
  4.      
  5.     // 自動釋放池1 
  6.     @autoreleasepool { 
  7.          
  8.      // 對象的釋放交給 自動釋放池去管理 不用再寫[person release] 
  9.         Person *person = [[[Person alloc] init] autorelease];  
  10.          
  11.         // 再創建一個自動釋放池2 
  12.         @autoreleasepool { 
  13.              
  14.             Person *person2 = [[[Person alloc] init] autorelease]; 
  15.         } 
  16.         
  17.         Person *person3 = [[[Person alloc] init] autorelease];    
  18.     } 
  19.     return 0; 

從上面的代碼可以看出:執行代碼時首先是person2對象先被銷毀,然后是外面的對象person和perons3 內存中的表現如下:

5.使用常見錯誤

  1. // 銷毀自動釋放池的時候 要對person再執行release操作的話 會報野指針錯誤 
  2.     @autoreleasepool { 
  3.         Person *person = [[[Person alloc] init] autorelease]; 
  4.         [person release]; 
  5.     }
  1. // 對象執行兩次autorelease意味著自動釋放池銷毀的時候 對象會執行兩次release操作 會報野指針錯誤 
  2.     @autoreleasepool { 
  3.         Person *person = [[[[Person alloc] init] autorelease] autorelease]; 
  4.     } 

 

責任編輯:閆佳明 來源: cnblogs
相關推薦

2010-07-20 08:50:00

autoreleaseObjective C

2011-07-21 09:32:07

Objective-C 內存 Autoreleas

2011-08-16 17:43:47

Objective-C內存管理Autorelease

2018-07-23 09:26:08

iOS內存優化

2017-03-07 10:15:35

iOS內存管理開發

2011-07-21 17:40:43

iOS 多核 內存

2011-08-05 16:41:48

iOS 隊列 內存

2011-08-22 11:07:16

IOS 開發多核內存

2011-07-21 14:42:45

iOS UIViewCont 內存

2015-03-13 09:30:23

iOS內存管理

2017-02-09 21:24:22

iOS內存管理

2016-04-11 09:30:49

內存管理ios開發

2023-10-18 13:31:00

Linux內存

2015-06-25 09:47:20

iOS內存管理

2013-04-11 13:57:27

Objective-CiOS開發內存管理

2016-03-03 10:07:39

ios內存管理面試總結

2011-07-21 09:42:27

Objective-C 內存 Autoreleas

2013-10-12 11:15:09

Linux運維內存管理

2010-09-13 08:58:47

自動釋放便捷方法內存管理

2023-08-31 00:02:28

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人欧美一区二区三区黑人孕妇 | 日本久草| 国产成人综合久久 | 色婷婷国产精品 | 日韩欧美三级电影 | 一区二区三区精品在线视频 | 国产一级大片 | 欧美日韩国产高清 | 免费观看一级特黄欧美大片 | 精品在线一区 | 免费在线视频精品 | 国产成年人小视频 | 精品国产一区二区国模嫣然 | 国产精品日韩欧美一区二区三区 | 日韩欧美1区2区 | 日韩中文字幕免费在线观看 | 日韩精品 电影一区 亚洲 | 精品欧美一区二区三区精品久久 | 亚洲天堂一区 | 黄色在线观看网站 | 91欧美激情一区二区三区成人 | 成人日韩| 久久av一区二区 | 日韩国产专区 | 午夜爽爽爽男女免费观看影院 | 国产色婷婷 | 在线看免费的a | 亚洲精品女人久久久 | 国产精品久久久久久久久久妞妞 | 欧美 日韩 国产 成人 在线 | 成人二区 | 午夜激情免费视频 | 免费大黄视频 | 日日日操| 中文字幕不卡 | 狠狠干美女 | 久久久性色精品国产免费观看 | 欧美在线二区 | 国产精品www | 欧美一区二区三区久久精品 | 91网站在线播放 |