iOS開發入門:響應記憶體警告

來源:互聯網
上載者:User

好的應用應該在系統記憶體警告情況下釋放一些可以重新建立的資源。在iOS中我們可以在應用程式委派物件、視圖控制器以及其它類中獲得系統記憶體警告訊息。

1、應用程式委派物件

在應用程式委派物件中接收記憶體警告訊息,需要重寫applicationDidReceiveMemoryWarning:方法。AppDelegate的程式碼片段:

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application      {      NSLog(@”AppDelegate中調用applicationDidReceiveMemoryWarning:”);      }

2、視圖控制器

在視圖控制器中接收記憶體警告訊息,需要重寫didReceiveMemoryWarning方法。ViewController的程式碼片段:

- (void)didReceiveMemoryWarning      {      NSLog(@”ViewController中didReceiveMemoryWarning調用”);      [super didReceiveMemoryWarning];      //釋放成員變數      [_listTeams release];      }

注意釋放資原始碼應該放在[super didReceiveMemoryWarning]語句下面。

3、其它類

在其它類中可以使用通知,在記憶體警告時候iOS系統會發出 UIApplicationDidReceiveMemoryWarningNotification通知,凡是在通知中樞註冊了 UIApplicationDidReceiveMemoryWarningNotification通知的類都會接收到記憶體警告通知。 ViewController的程式碼片段:

- (void)viewDidLoad      {      [super viewDidLoad];      NSBundle *bundle = [NSBundle mainBundle];      NSString *plistPath = [bundle pathForResource:@"team"     ofType:@"plist"];      //擷取屬性列表檔案中的全部資料      NSArray *array = [[NSArray alloc] initWithContentsOfFile:plistPath];      self.listTeams = array;      [array release];          //接收記憶體警告通知,調用handleMemoryWarning方法處理          NSNotificationCenter *center = [NSNotificationCenter defaultCenter];          [center addObserver:self                     selector:@selector(handleMemoryWarning)                         name:UIApplicationDidReceiveMemoryWarningNotification                       object:nil];      }      //處理記憶體警告      -(void) handleMemoryWarning      {          NSLog(@”ViewController中handleMemoryWarning調用“);      }

我們在viewDidLoad方法中註冊UIApplicationDidReceiveMemoryWarningNotification消 息,接收到警示資訊調用handleMemoryWarning方法。這些代碼完全可以寫在其它類中,在ViewController中重寫 didReceiveMemoryWarning方法就可以了,本例這是示意性介紹一下 UIApplicationDidReceiveMemoryWarningNotification警示訊息。

記憶體警告在裝置上出現並不是經常的,一般我們沒有辦法類比,但模擬器上有一個功能可以類比記憶體警告,啟動模擬器,選擇模擬器菜單硬體→類比記憶體警告,這個時候我們會在輸出視窗中看到記憶體警告發生了。

2012-11-06 16:49:16.419 RespondMemoryWarningSample[38236:c07] Received memory warning.

2012-11-06 16:49:16.422 RespondMemoryWarningSample[38236:c07] AppDelegate中調用applicationDidReceiveMemoryWarning:

2012-11-06 16:49:16.422 RespondMemoryWarningSample[38236:c07] ViewController中handleMemoryWarning調用

2012-11-06 16:49:16.423 RespondMemoryWarningSample[38236:c07] ViewController中didReceiveMemoryWarning調用

本文出自 “關東升” 部落格,請務必保留此出處http://2009315319.blog.51cto.com/701759/1133367

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.