ios程式中的通知機制

来源:http://www.cnblogs.com/shouce/archive/2016/02/22/5206058.html
-Advertisement-
Play Games

每一個應用程式中都有一個NSNotificationCenter實例,用來協助不同的對象之間的通信,任何一個對象都可以向通知中心發佈通知(NSNotication),在通知中描述自己做什麼。其他的感興趣的對象可以申請在某個特定的通知或者特定對象發出通知時接收到這個通知。 一個通知一般包含有3個屬性:


每一個應用程式中都有一個NSNotificationCenter實例,用來協助不同的對象之間的通信,任何一個對象都可以向通知中心發佈通知(NSNotication),在通知中描述自己做什麼。其他的感興趣的對象可以申請在某個特定的通知或者特定對象發出通知時接收到這個通知。

  一個通知一般包含有3個屬性:

  //通知的名稱

  - (NSString *)name;

  //通知的發佈者

  - (id)object;

  //通知附加的額外信息

  - (NSDictionary *)userinfo;

  

  初始化一個通知對象有以下的方法

  + (instancetype)notificationWithName:(NSString *)aName object:(id)anObject;

  + (instancetype)notificationWithName:(NSString *)aName object:(id)anObject userInfo:(NSDictionary *)aUserInfo;

  - (instancetype)initWithName:(NSString *)name object:(id)object userInfo:(NSDictionary *)userInfo;

 

 

     通知中心(NSNotificationCenter)提供了相應的方法註冊監聽器(Observer)來監聽通知的發佈

  - (void)addObserver:(id)observer selector:(SEL)aSelector name:(NSString *)aName object:(id)anObject;

  參數解析: observer:監聽器,即誰要接收這個通知

       aSelector:收到通知後,回調監聽器的這個方法,並且把通知對象當做參數傳入

       aName:通知的名稱。如果為nil,那麼無論通知的名稱是什麼,監聽器都能收到這個通知

       anObject:通知發佈者。如果為anObject和aName都為nil,監聽器都收到所有的通知

 

  - (id)addObserverForName:(NSString *)name object:(id)obj queue:(NSOperationQueue *)queue usingBlock:(void (^)(NSNotification *note))block;

  參數解析: name:通知的名稱

       obj:通知發佈者

       block:收到對應的通知時,會回調這個block

       queue:決定了block在哪個操作隊列中執行,如果傳nil,預設在當前操作隊列中同步執行

  通知中心不會保留監聽器對象,在通知中心註冊過的對象,必須在該對象釋放前取消註冊。否則,當相應的通知再次出現時,通知中心仍然會向該監聽器發送消息。因為相應的監聽器對象已經被釋放了,所以可能會導致應用崩潰 通知中心提供了相應的方法來取消註冊監聽器

  - (void)removeObserver:(id)observer;

  - (void)removeObserver:(id)observer name:(NSString *)aName object:(id)anObject;

  一般在監聽器銷毀之前取消註冊,一般用以下方法:

  - (void)dealloc {

    [super dealloc];

    [[NSNotificationCenter defaultCenter] removeObserver:self];

   }

  UIDevice類提供了一個單例對象,它代表著設備,通過它可以獲得一些設備相關的信息,比如電池電量(batteryLevel)、電池狀態(batteryState)、設備的類型(model,比如iPod、iPhone等)、設備的系統(systemVersion) 通過[UIDevice currentDevice]可以獲取這個單粒對象 UIDevice對象會不間斷地發佈一些通知,下列是UIDevice對象所發佈通知的名稱常量:   UIDeviceOrientationDidChangeNotification // 設備旋轉

  UIDeviceBatteryStateDidChangeNotification // 電池狀態

  UIDeviceBatteryLevelDidChangeNotification // 電池電量

  UIDeviceProximityStateDidChangeNotification // 近距離感測器


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在free命令中有個參數l,它表示 show detailed low and high memory statistics。其實最先是對High Memory總是為零有些不解(Linux是64為)。其實更不解的是關於low memory、high memory。那麼關於low memory和hig...
  • 1. 常用命令 ls 顯示當前目錄下的文件和文件夾; -ltr 按時間順序顯示文件和文件夾的詳細信息,不帶參數的時候 只顯示文件夾和文件。 vi 打開文件的內容 tar -cvf file.tar file 壓縮成tar包 tar -xvf file.tar file 解壓縮tar包,後面的file
  • 轉載自:http://blog.csdn.net/luo86106/article/details/6946255 .gz 解壓1:gunzip FileName.gz 解壓2:gzip -d FileName.gz 壓縮:gzip FileName .tar.gz 解壓:tar zxvf File
  • ubuntu系統自帶截圖功能使用介紹 ubuntu自定義截圖快捷鍵:Shift+PrtSc 截取當前視窗快捷鍵:Alt+PrtSc 保存全屏截圖:PrtSc
  • 改進uwsgi啟動腳本,使其支持多個獨立配置文件。
  • 寫在前面 2012年寫的,僅供參考 反彙編的目的 缺乏某些必要的說明資料的情況下, 想獲得某些軟體系統的源代碼、設計思想及理念, 以便複製, 改造、移植和發展; 從源碼上對軟體的可靠性和安全性進行驗證,對那些直接與CPU 相關的目標代碼進行安全性分析; 涉及的主要內容 分析ARM處理器指令的特點,以
  • 編寫i2c設備驅動(從設備)一般有兩種方式: 1.用戶自己編寫獨立的從設備驅動,應用程式直接使用即可。 2.linux內核內部已經實現了一個通用的設備驅動,利用通用設備驅動編寫一個應用程式(用戶態驅動),在應用程式中用到大量設備驅動提供的介面,通過應用程式來控制從設備。 匯流排驅動 4.1 概述 I2
  • 一 打開 Apache 的配置文件 httpd.conf 。二 將#LoadModule rewrite_module modules/mod_rewrite前面的#去掉三 在 httpd.conf中添加:<IfModule mod_rewrite.c>RewriteEngine On#Rewrit
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...