例如,當內存不足時,系統會發送UIApplicationDidReceiveMemoryWarningNotification
通知。蘋果公司在這方面的文件中就是這麼說的。但是,這個通知來自哪裏,併發送給哪個方法?或者我在哪裏以及如何註冊我收到的通知?我在哪裏以及如何註冊接收通知的對象?
5
A
回答
5
它被髮送到所有通知都集中的通知中心。想要了解此通知的對象通過告知其希望獲得通知的通知以及在引發通知時應該調用哪種方法,將自己註冊到通知中心。
欲瞭解更多信息,你可以看看Notification programming topics for Cocoa和NSNotification class reference。
17
從您希望收到通知的類進行下面的方法調用的初始化代碼中:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleMemoryWarning:) name: UIApplicationDidReceiveMemoryWarningNotification object:nil];
這是假設你的類也實現了handleMemoryWarning方法如下:
- (void) handleMemoryWarning:(NSNotification *)notification
{
}
5
使用應用程序委託和實現可選方法簡單得多
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
最常見的通知也可以翻譯成調用委託,通常是正式協議中的可選方法。你的委託可以是任何你喜歡的對象。
0
被警告您的選擇器需要將通知作爲參數。
如果您使用類似於@selector(handleMemoryWarning)和 - (void)handleMemoryWarning {}的對象將不會發送通知,並且您仍將保留所有內存。
我只是被這個咬傷了。
相關問題
- 1. 我應該在哪裏註銷我的視圖中的註冊接收者?
- 2. 自我對象如何以及在哪裏分配?
- 3. 我應該在哪裏註冊廣播接收機?
- 4. 我在哪裏接收我在android中發送的對象?
- 5. 註冊通知的託管對象
- 6. 繼承以及在哪裏聲明預期的通用對象
- 7. 註冊接收Android的GCM,在哪裏和多少次?
- 8. 如何在aws sns中註冊iOS設備令牌以接收推送通知?
- 9. 在哪裏以及如何定義django模型對象屬性?
- 10. 如何以及應該在哪裏消費域對象方法?
- 11. FragmentActivity:在哪裏註冊接收者,打開數據庫
- 12. 註冊UWP(WinJS)應用程序以接收DEV中心通知
- 13. 我在哪裏取消註冊NSNotification?
- 14. Spring如何知道代理對象需要注入哪裏?
- 15. MvcRouteHandler在哪裏註冊
- 16. 在哪裏註冊kobold2d NSUserDefaults
- 17. FormsAuthenticationModule在哪裏註冊?
- 18. 在IntentService中註冊的監聽器只接收一次通知
- 19. 我在哪裏以及如何在我的XAML中實現ScrollViewer?
- 20. ParentViewController正在成爲零,不知道在哪裏以及如何
- 21. COM對象版本號以及它如何通過Win註冊表處理
- 22. 如何爲SENS事件註冊接收對象
- 23. 在哪裏以及如何在C
- 24. 我在哪裏可以找到Apple Developer程序的註冊ID?
- 25. 在Android上註冊但不接收推送通知
- 26. 無法註冊Xamarin Android上的推送通知以及IntercomIO
- 27. 我在哪裏可以在ASP.NET應用程序中註冊IMemoryCache?
- 28. 如何以及在哪裏保存我從ajax調用收到的數據?
- 29. 在哪裏執行onClickListener以及如何?
- 30. 在哪裏以及如何使用Page.RegisterRequiresViewStateEncryption()?
不要忘記在該類的dealloc中調用removeObserver。 – Abizern 2009-04-11 18:38:19
無法編輯。選擇器應該是@selector(handleMemoryWarning :) – DougW 2010-05-14 23:12:03
我最初忽略使用代碼標籤 - 修正。 – m4rkk 2011-10-22 06:10:57