日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

IOS的消息传递机制,使用NSNotificationCenter进行通信,很实用

發(fā)布時間:2025/3/20 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IOS的消息传递机制,使用NSNotificationCenter进行通信,很实用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

概述
在這個文檔中,我們將討論2個不相關(guān)的或者彼此之間不知道對方id的對象是如何通信的.所有的例子都是基于Objective-C的,這篇文章的關(guān)注點是Iphone開發(fā).這個手冊對那些在iphone開發(fā)和想要提高軟件的易用性,擴展性的人將非常有用.


下面,我們將討論具體的項目細節(jié)(http://www.hivestudio.cat/goldCube.zip),這個例子是一個小的OpenGL視圖程序,你可以對金色正方體進行翻轉(zhuǎn).
圖片



使用者可以用"Rotate X""Rotate Y"和"Rotate Z"進行操作.

當(dāng)使用者點擊"Rotate X"按鈕,"ViewController"中的“button1()”函數(shù)將被調(diào)用.然后"ViewController"將通知“OpenGLView”,告訴他,用戶要進行翻轉(zhuǎn)物體,問題是“ViewController”并沒有任何"OpenGLView"實例,唯一可行的方法是使用"NotificationCenter"進行通信.

下面是使用“NotificationCenter”對"ViewController"和"OpenGLView"進行通信的步驟:
1) 在OpenGLView中添加消息的觀察者.
OpenGLView.m

- (void)prepareOpenGL
{
//1 -> Adding OpenGLView as an observer.
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(RotateX)
name:@"button1"//表示消息名稱,發(fā)送跟接收雙方都要一致
object:nil]
...

}
2)在"ViewController"中發(fā)送消息.
viewController.m

- (IBAction)button1:(id)pId;
{
//3 -> SENDING THE MESSAGE
[[NSNotificationCenter defaultCenter] postNotificationName:@"button1" object:self];//注意object屬性
}

3)"OpenGLView"相應(yīng)對此消息的對應(yīng)方法.
OpenGLView.m

//2 à IMPLEMENTING THE METHOD
- (void) RotateX
{
NSLog(@"rotateX");
dAnlgeX=dAnlgeX+10;
}
這些步驟允許我們在"OpenGLView"和"viewController"之間傳遞消息

?

同時在dealloc方法,將observer從notification center中移除

- (void)dealloc

{

?? ?[self setEmployees:nil];

?? ?NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];

?? ?[nc removeObserver:self];

?? ?[super dealloc];

}

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的IOS的消息传递机制,使用NSNotificationCenter进行通信,很实用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。