成人免费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-07-21 14:42:45

iOS UIViewCont 內存

2015-03-13 09:30:23

iOS內存管理

2011-08-22 11:07:16

IOS 開發多核內存

2017-02-09 21:24:22

iOS內存管理

2016-04-11 09:30:49

內存管理ios開發

2015-06-25 09:47:20

iOS內存管理

2023-10-18 13:31:00

Linux內存

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技術棧公眾號

主站蜘蛛池模板: 国产资源视频 | 国产视频福利 | 成人免费看片又大又黄 | аⅴ资源新版在线天堂 | 欧美综合在线视频 | 激情a | 精品在线看 | 久久综合一区 | 秋霞电影一区二区 | 四色永久| 国产日韩欧美精品一区二区 | 欧美精品久久 | 亚洲精品 在线播放 | 狠狠狠 | 黑人巨大精品欧美黑白配亚洲 | 91免费福利在线 | 天久久 | 国产成人亚洲精品 | 精品日韩一区二区 | 三级免费毛片 | 一区二区三区免费 | 午夜免费在线电影 | 黄色网址在线免费播放 | 国产成年人视频 | 91精品国产综合久久香蕉922 | 不卡一区| 特黄特黄a级毛片免费专区 av网站免费在线观看 | 欧美专区日韩 | 男人天堂视频在线观看 | 国产高清性xxxxxxxx | 亚洲视频一区 | 日本午夜免费福利视频 | 欧美福利久久 | 午夜电影在线播放 | 国产精品美女久久久久久久久久久 | 91成人午夜性a一级毛片 | 国产精品免费一区二区三区四区 | 黑人一级片视频 | 欧美日韩福利视频 | 亚洲午夜视频在线观看 | 久久国产精品视频 |