2009-04-11 21 views
5

例如,當內存不足時,系統會發送UIApplicationDidReceiveMemoryWarningNotification通知。蘋果公司在這方面的文件中就是這麼說的。但是,這個通知來自哪裏,併發送給哪個方法?或者我在哪裏以及如何註冊我收到的通知?我在哪裏以及如何註冊接收通知的對象?

回答

17

從您希望收到通知的類進行下面的方法調用的初始化代碼中:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleMemoryWarning:) name: UIApplicationDidReceiveMemoryWarningNotification object:nil]; 

這是假設你的類也實現了handleMemoryWarning方法如下:

- (void) handleMemoryWarning:(NSNotification *)notification 
{ 
} 
+4

不要忘記在該類的dealloc中調用removeObserver。 – Abizern 2009-04-11 18:38:19

+0

無法編輯。選擇器應該是@selector(handleMemoryWarning :) – DougW 2010-05-14 23:12:03

+0

我最初忽略使用代碼標籤 - 修正。 – m4rkk 2011-10-22 06:10:57

5

使用應用程序委託和實現可選方法簡單得多

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application 

最常見的通知也可以翻譯成調用委託,通常是正式協議中的可選方法。你的委託可以是任何你喜歡的對象。

0

被警告您的選擇器需要將通知作爲參數。

如果您使用類似於@selector(handleMemoryWarning)和 - (void)handleMemoryWarning {}的對象將不會發送通知,並且您仍將保留所有內存。

我只是被這個咬傷了。

相關問題