這聽起來很瘋狂,但我需要更新OS X用戶的默認值(特別是Dock.app),然後讓應用程序以某種方式識別出該更改已被並做出相應迴應。導致應用程序響應OS X中的更改用戶默認值
我知道這是可能的莫名其妙,因爲當在系統偏好設置中更改設置時,它立即生效。不幸的是,手冊defaults write
-ing的情況並非如此。
這是我到目前爲止已經試過:
- 掛起
Dock
過程。 $ defaults write com.apple.dock launchanim -bool false
- 運行這一個基本程序:
[[NSDistributedNotificationCenter defaultCenter] postNotificationName:NSUserDefaultsDidChangeNotification object:nil];
不幸的是,這個通知似乎沒有任何效果。在恢復Dock時,無法識別更改(實際上,它在系統首選項中也未被識別)。
在這種情況下,我可以使用一些其他的(可能未記錄的)通知名稱嗎?或者用其他方式來表明這一點?
請注意,在這種情況下,只需要停止Dock功能,即可使用而不是選項。我可能會使用一些代碼注入方法(mach-inject?)來強制Dock調用[[NSUserDefaults standardUserDefaults] synchronize]
,但是我首先對更簡單和不太侵入的方法更感興趣,如果它們存在。
@Ssswift Huh,沒有看到。所以目前看來這是不可能的。好吧。 – ThatsJustCheesy
您可以向Apple提交錯誤報告 - 它今天不會幫助您,但這似乎是一個受歡迎的請求,我認爲這是一個合理的事情要做。 – Ssswift
有趣的提示:我剛剛發現這個名爲cDock的應用程序,它允許Dock上的各種用戶自定義... ***沒有***關閉它!最重要的是,它完全開放源代碼:https://github.com/w0lfschild/cDock2它實現這一點(特別是,SIMBL注入到Dock並調用一些反向工程的內部過程API ),但知道這一點非常簡單,只要有足夠的奉獻精神(和代碼!),這是完全可能的。但是,這需要代碼注入,我寧願不要插入...但它可能是唯一的選擇:/ – ThatsJustCheesy