LSSharedItemList
ログイン時に( APIを使用して)起動するためにアプリを登録するアプリの設定を書いています。すべてうまくいき、アプリはチェックボックスのステータスに応じてユーザーのログイン項目での存在を切り替えます。ユーザーが実際に「ログイン項目」からアプリを削除したときの別の問題に取り組みたいと思いますAccounts.prefPane
。
通知ウォッチャーを使用すると、分散通知センターが通知を送信することがわかりますcom.apple.loginItemsListDidChnage
(タイプミスに注意してください)。したがって、設定ウィンドウのチェックボックスを処理する同じセレクター(これは )でその通知のオブザーバーを追加しIBAction
ます(実際には、/からアプリを[登録解除]します)ログインアイテムへ)。
アプリをログイン項目として切り替えるアクションの送信者のクラスを比較しようとすると、問題が発生します。を使用する[sender description]
とクラスが[sender class]
表示NSConcreteNotification
されますが、それを比較しようとするとすぐに、そのようなクラスが定義されていないと言ってコードが壊れます。
if ([[sender class] isEqualTo:[NSConcreteNotification class]]) {
...
}
送信者を - と比較しようとするとNSNotification
、フローはそのブランチに分類されません。
Mac OS X での配信通知に関する重要な知識が欠けているのではないでしょうか?
Mac OS X 10.6.2 の実行