我正在爲我的應用程序編寫首選項,將其註冊爲在登錄時啓動(使用LSSharedItemList
API)。一切正常,我的應用程序在複選框狀態下切換其在用戶登錄項目中的存在。現在我想解決用戶從Accounts.prefPane
的「登錄項目」中刪除應用程序時出現的另一個問題。收到NSConcreteNotification,但沒有定義?
使用通知觀察者我看到,分佈式通知中心發送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
且不說我不認爲'isEqualTo:'可以作爲一個類的方法,所以這應該拋出呢,一事─響應選擇器異常。 (甚至實例版本是用於腳本編寫的。http://developer.apple.com/mac/library/documentation/cocoa/Reference/Foundation/Protocols/NSComparisonMethods_Protocol/對於一般目的,您可以使用'isEqual:'。)If測試這是否是完全相同的類是合適的,您可以在這裏使用'=='運算符。 – 2010-01-24 16:22:55