10

多くの調査を行いましたが、探しているものが見つかりませんでした。現在、アプリDeployment Targetとの両方がに設定されており、完全に動作します。Mountain Lionsの新しい通知センターに通知を適切に投稿できます!Base SDK10.8

Mac OSでも動作するアプリをビルドするために10.6、Deployment Targetを10.6に設定してビルドしました(このスレッドで推奨されているように)。残念ながら、アプリは10.6でクラッシュし、クラッシュレポートには、NSUserNotificationCenterが見つからなかった(OSバージョンの処理なし)と詳細が記載されています。

-

したがって、私が確実に行う必要があるのは、NSUserNotificationCenterクラスが存在するかどうかを確認することです。

notificationCenterIsAvailable = (NSClassFromString(@"NSUserNotificationCenter")!=nil);

このブールフラグに基づいて動作します。

しかし、次のように、このフラグに基づくことができないコードについてはどうでしょうか。

  • インターフェイス..: <NSUserNotificationCenterDelegate> {
  • または通知センターへの参照のタイプ:NSUserNotificationCenter *centerクラスのプロパティで?

私の最初の考えは、実行時にクラスヘッダーを動的に変更することでした。つまり、クラスが存在するかどうかに基づいてNotificaion Centerを処理するメソッドとプロパティを追加しましたが、これは本当に複雑に思えますか?!

4

1 に答える 1

3

これらはコンパイルの問題であり、BaseSDKが10.8である場合は常に問題ありません。centerポインタが存在しないnil場合はそのままにしておくことができるため、テスト後に実行されたコードで通知を行っているNSUserNotificationCenterかどうかを確認するためのフラグとして使用できます。

編集実際、それを残すことnilはあなたがそれをチェックする必要さえないことを意味します。通常どおりメッセージを送信するだけで、ポインタがそうである場合は無視されますnil(これは、メッセージの作成に費用がかかり、CPUサイクルを節約したい場合を除きます)。

于 2012-07-31T09:26:10.813 に答える