開発中のサンドボックス化された Mac アプリで非常に奇妙な問題が発生しました。要件の 1 つは、システムの起動時にユーザーがアプリを起動できるようにすることです。このために、 http: //blog.timschroeder.net/2012/07/03/the-launch-at-login-sandbox-project/ で説明されているように、SMLoginItemSetEnabled() を使用しています。
ユーザーがアプリを初めて起動してこのオプションを有効にすると、launchctl listを使用してlaunchctlにエントリが追加されていることがわかります。システムを再起動しても、アプリが起動しません。さらに奇妙なのは、launchctl listを使用して見つかったエントリが消えているという事実です。ただし、 /private/var/db/launchd.db/com.apple.launchd.peruser.501/overrides.plistには、 Disabledキーが falseの同様のエントリがまだあります。
アプリを手動で起動し、自動的に起動するオプションを再度設定すると、エントリがlaunchctl listで再び利用可能になります。システムを再起動すると、アプリが自動的に起動されます。結論として、何らかの理由で SMLoginItemSetEnabled() は、アプリを 2 回目に実行したときにのみ機能します。そのため、この問題に似ています: https://stackoverflow.com/questions/16354295/sandbox-app-with-logitems-only-work-after-second-app-launch。ただし、解決策は提供されません。