Objective-C中的老闆是這樣發通知的(Notification)

來源:互聯網
上載者:User

標籤:style   color   os   io   ar   2014   div   cti   代碼   

    ?    ?通知(Notification)簡單的類比一下,公司的老總給下面的員工發通知啦,說明天公司要上市,各部門做一下準備工作。等通知發完,各部門收到後各司其職,做著自己該做的東西。假如Boss是通過公司的內部論壇發送的通知,那麼Boss就是發送通知的對象,而公司員工就是通知的接受方,而公司的內部論壇就是通知中樞,員要想接收到Boss發送的通知的前提是先在論壇上註冊一下。老闆只有一個,而接受通知的有多個部門,老闆是通過論壇廣播的形式發送的通知。說的高大上一點,通知是一種發送給一個或多個觀察著,用來通知其在程式中發生了某個事件的訊息。Cocoa中的通知及時遵循的是一種廣播的模式。

    ?    ?暫且這麼類比著,這是根據我個人理解而想出的例子,可能會有不足之處,希望大家批評指正,轉載請註明出處。

    ?    ?廢話少說,我們如何把上面boss通過論壇發帖的形式來發送通知用Objective-C中的Notification來實現呢,代碼走起

    ?    ?1.一個公司得有老闆對吧,所以我們要建立一個老闆類,公司的內部論壇就是我們OC中的通知中樞(NotificationCenter),看完老闆的實現代碼在說兩句吧

1234567891011121314 @implementation Boss-(void)sendMessage{    //把要發送的資訊放入字典中(boss要在論壇中說的話)    NSDictionary *message = @{@"notification" : @"大家注意啦,明天公司上市!"};         //建立通知對象(老闆登陸boss帳號)    NSNotification * notification = [NSNotification notificationWithName:@"boss" object:self userInfo:message];         //向通知中樞發送訊息(發布訊息)    [[NSNotificationCenter defaultCenter] postNotification:notification];     }@end

    ?    ?代碼說明:

    ?    ?    ?    ?1.老闆要發的訊息要放在字典中才能發布,字典的key是文章的主題,value是文章的內容

    ?    ?    ?    ?2.建立通知對象就好比老闆登陸內部論壇,用notificationWithName設定老闆的暱稱

    ?    ?    ?    ?3.向通知中樞發送訊息就是老闆發帖啦

 

    ?2.下面我們就開始類比各個部門接受通知後要做的事情,人力資源部接到通知後要做的事兒

12345678910111213141516171819202122 @implementation HumanResources- (instancetype)init{    self = [super init];    if (self) {        //現在通知中樞註冊,確定要接受誰的訊息,(登陸論壇,關注老闆)        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doSomething:) name:@"boss" object:nil];    }    return self;} -(void)doSomething:(NSNotification *)notification{         //接受訊息,(從論壇上看到啦boss的訊息)    NSDictionary *bossInfo = [notification userInfo];    //輸出收到的資訊    NSLog(@"人力資源部門收到:%@", bossInfo[@"notification"]);}  @end

    ?代碼說明:

    ?    ?1.註冊為觀察者相當於各部門要在內部論壇註冊並關注老闆,在關注老闆的同時指定當老闆發送通知時自己要做些什麼事兒

    ?    ?2.doSomething裡是各部門要做的事情

   

    ?3.再添加一個財務部,和上面的代碼類似,在這就不寫了

    ?4.在main函數裡做如下的測試

12345 Boss * boss = [[Boss alloc] init];Finance * finance = [[Finance alloc] init];HumanResources *hr = [[HumanResources alloc] init];//老闆發訊息啦[boss sendMessage];

    ?當老闆發通知時,各部門會自動調取自動執行的方法,運行結果如下:

12 2014-08-20 15:10:29.816 Memory[1946:303] 財務部門收到:大家注意啦,明天公司上市!2014-08-20 15:10:29.817 Memory[1946:303] 人力資源部門收到:大家注意啦,明天公司上市!

?    上面的總結暫且這麼說吧,是根據筆者自己的理解所總結的內容,不免有偏頗之處,歡迎批評指正,轉載請註明出處。

 

Objective-C中的老闆是這樣發通知的(Notification)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.