1. ホーム
  2. iphone

NSNotificationcenterのobjectプロパティの使用方法

2023-10-04 09:08:04

質問内容

どなたか、NSNotifcationCenterのobjectプロパティの使い方を教えていただけませんか。私はそれを私のセレクタメソッドに整数値を渡すために使用できるようにしたい。

これは、私のUIビューで通知リスナーをセットアップする方法です。整数値を渡したいので、nil を何に置き換えたらいいかわかりません。

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


- (void)receiveEvent:(NSNotification *)notification {
    // handle event
    NSLog(@"got event %@", notification);
}

このように、別のクラスから通知をディスパッチしています。この関数はindexという名前の変数を渡されます。この値で、どうにかして通知を発火させたいのです。

-(void) disptachFunction:(int) index
{
    int pass= (int)index;

    [[NSNotificationCenter defaultCenter] postNotificationName:@"myevent" object:pass];
    //[[NSNotificationCenter defaultCenter] postNotificationName:<#(NSString *)aName#>   object:<#(id)anObject#>
}

どのように解決するのですか?

この object パラメータは通知の送信者を表し、通常は self .

余計な情報を渡したい場合は NSNotificationCenter というメソッドを使います。 postNotificationName:object:userInfo: このメソッドは、(自由に定義できる)任意の値の辞書を受け取ります。 コンテンツは実際の NSObject インスタンスである必要があり、整数のような整数型ではありません。 NSNumber オブジェクトで包む必要があります。

NSDictionary* dict = [NSDictionary dictionaryWithObject:
                         [NSNumber numberWithInt:index]
                      forKey:@"index"];

[[NSNotificationCenter defaultCenter] postNotificationName:@"myevent"
                                      object:self
                                      userInfo:dict];