1

まず、私の英語で申し訳ありません... UITabBarController を持つ iOS アプリケーションを開発しています。アプリケーション内で発生するイベントを管理するために、この UITabBarController からソケットを初期化したいと考えています。

問題は、私がそれを行う方法がわからないことです。私のソケットを使用して、サーバーにメッセージを送信し、このサーバーからメッセージを受信できます。他のタブ項目にいる場合にイベントを受け取りたいです。

これはソケットを作成するための私のコードです:

- (void) initNetworkCommunication {

CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"212.227.52.247", 9191,  &readStream, &writeStream);

inputStream = (__bridge NSInputStream *)readStream;
outputStream = (__bridge NSOutputStream *)writeStream;
[inputStream setDelegate:self];
[outputStream setDelegate:self];
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream open];
[outputStream open];

[self activarUsuario];
}

メッセージを送信するためのビューがありますが、新しいメッセージを受信した WhatsApp のように、UITabBarController にあるすべてのビューでイベントを処理したいと思います...

誰か助けてくれませんか?

何日も Google で検索していますが、何も見つかりませんでした...

どうもありがとうございました!!

4

1 に答える 1

1

おそらく、ソケット通信コードを別のクラス、おそらく App Delegate または別のシングルトン型クラスに移動できます。イベントを受信するたびに、受信しNSNotificationCenterたイベントを含むデータの辞書とともにデフォルトを使用してその情報を投稿できます。

UIViewControllerこれを行うと、メソッドを使用して通知を受信するように各インスタンスを登録できますNSNotificationCenter addObserver:selector:name:object:UIViewControllerインスタンスが通知を受け取るたびに、セレクターで指定したメソッドが呼び出されます。

ソケットコードでイベントを受け取ったら、次のように通知を投稿できます

[[NSNotificationCenter defaultCenter] postNotificationName:@"MY_NOTIFICATION_TYPE" object:sender userInfo:yourDictionaryOfEventData];

次のようにメソッドで通知を登録できUIViewController viewWillAppear:ます...(ビューが表示されていない/ロードされていないときに通知が必要な場合は、initでこれを行うことができます)

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receivedEvent:) name:@"MY_NOTIFICATION_TYPE" object:sender];

最後に、 の通知の登録を解除することを忘れないviewWillDisappear:でくださいUIViewController。(またはinitで登録した場合はdealloc)

[[NSNotificationCenter defaultCenter] removeObserver:self name:@"MY_NOTIFICATION_TYPE" object:sender];

NSNotification Apple Docs

于 2012-06-27T16:57:56.010 に答える