iOS開發之NSNotification

來源:互聯網
上載者:User

什麼是notification?

個人的理解,就是某個人在某個部門註冊成為會員,也就是我們下面說道的註冊稱為監聽者,讓監聽者替你監聽某個事件,當監聽者監聽到某事件後,就發送通知:postNotification 給nsnotificationCenter,然後監聽者執資料列選取器中的方法。下面簡單介紹一下這個過程:

首先要註冊監聽器:

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(goChange:) name:@"ChangeColor" object:nil];

最後的object:後我們用的是nil 表明是給所有的監聽者發送資訊,如果寫的是某一個對象,則只給該對象發送通知。

其中就我的考慮:NSNotificationCenter 就像是一個存放訊息的容器,我們既可以向裡面存放資訊,也可以從裡面提取資訊。

goChange:方法的實現如下:

-(void)goChange:(NSNotification *)notification

{

    //拿到通知內容。

    NSDictionary *dic = [notification userInfo];

    NSString *colorString = [dic objectForKey:@"color"];

    UIColor *color = nil;

    if ([colorString isEqualToString:@"red"]) {

        color = [UIColor redColor];

    } else if ([colorString isEqualToString:@"blue"]){

        color = [UIColor blueColor];

    }

    self.view.backgroundColor = color;

}


所實現的功能就是:我有兩個按鈕,當點擊red按鈕時,背景顏色變為紅色,當點擊藍色按鈕時背景顏色變為藍色。其中兩個按鈕設定的方法如下:

redButton:

-(void)setRedColor

{

    NSDictionary *dic = [NSDictionary dictionaryWithObject:@"red" forKey:@"color"];

    [[NSNotificationCenter defaultCenter]postNotificationName:@"ChangeColor" object:self userInfo:dic] ;

}

blueButton:

-(void)setBlueColor

{

    NSDictionary *dic = [NSDictionary dictionaryWithObject:@"blue" forKey:@"color"];

    [[NSNotificationCenter defaultCenter]postNotificationName:@"ChangeColor" object:self userInfo:dic];

}


然後就是這一句:

[[NSNotificationCenter defaultCenter]postNotificationName:@"ChangeColor" object:self userInfo:dic];


postNotification的作用是儲存參數,並把這個建立的notification發送給NSNotificationCenter;


我的理解就是:當點擊按鈕的時候,看notificationName如果這個name跟postNotificationName相同,則通知發送成功,執行監聽者選取器的方法。就達到了通知你個人的目的。


    如有疑問,歡迎提出,這也是我剛開始寫技術性的部落格文章,肯定會有很多漏洞,歡迎批評指正,相信我會越做越好。

相關文章

聯繫我們

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