3

NSNotificationCenterアプリのモデルが別のクラスに影響を与える可能性がある方法で変更されたときに、クラスを使用してブロードキャストしています。私は次のような標準的な慣行に従っています:

NSNumber *myData = [NSNumber numberWithInt:42];
NSDictionary *myDict =
            [NSDictionary dictionaryWithObject:myData
                                        forKey:@"data"];

NSString *myNotificationKey = @"mynote";
[[NSNotificationCenter defaultCenter] postNotificationName:myNotificationKey
                                                    object:self
                                                  userInfo:myDict];

新しいものは何もありません。ここで私の質問があります。投稿する通知をどのように「宣言」すれば、他の開発者が何を聞くべきかを知ることができますか? 文字通り宣言するという意味ではありませんが、別のドキュメントを書く以外に、期待することをどのように伝えればよいでしょうか? 私のクラスを使用している誰かがヘッダー ファイルを見て、期待できる通知を判断できるようにしたいと考えています。私はこのようなことをすることができます...

// in MyClass.h

/*
 * NOTIFICATIONS
 * Name: mynote
 * UserInfo: {data : (NSNumber *)}
 * Name: myothernote
 * etc....
 */

しかし、それはかなり不格好です。そのような情報を別のドキュメントに入れる唯一のオプションはありますか?

4

1 に答える 1

2

これが私が使用するものです:

ヘッダー ファイルで、行の後、宣言#importの前に:@interface

   // Documentation about why the notification is interesting and useful
   extern NSString * const ZZZSomeNameNotification;

実装ファイル:

   NSString * const ZZZSomeNotification = @"ZZZSomeNotification";

次に、コードで通知を投稿するときは、名前を参照するたびに ZZZSomeNotification を使用します。

これは、Apple がヘッダー ファイルで通知名を宣言する方法とよく似ています。Xcode の [ファイル] メニューの [すばやく開く...] メニュー項目を使用して、使用している Apple 提供のクラスのヘッダー ファイルを確認すると、同様のものが表示されます。

于 2013-09-25T01:40:40.603 に答える