У меня очень странная проблема с песочным Mac-приложением, которое я разрабатываю. Одним из требований является то, что пользователь должен иметь возможность запускать приложение при запуске системы. Для этого я использую SMLoginItemSetEnabled(), как описано в http://blog.timschroeder.net/2012/07/03/the-launch-at-login-sandbox-project/.
Когда пользователь запускает приложение в первый раз и включает этот параметр, я вижу, что запись добавляется к launchctll, используя список launchctl. Когда я перезагружаю систему, приложение не запускается. Более странным является тот факт, что запись, найденная с использованием списка launchctl, исчезла. Однако аналогичная запись по-прежнему доступна в файле /private/var/db/launchd.db/com.apple.launchd.peruser.501/overrides.plist с ключом Disabled is false.
Когда я запускаю приложение вручную и снова устанавливаю параметр для запуска автоматически, запись снова доступна в списке launchctl. Когда я перезагружаю систему, приложение запускается автоматически. Заключение, по какой-то причине SMLoginItemSetEnabled() работает только во второй раз, когда я запускаю приложение. Поэтому он похож на эту проблему: https://stackoverflow.com/info/16354295/sandbox-app-with-loginitems-only-work-after-second-app-launch. Однако решение не предоставляется.