他の人がまだ答えを探しているのを見て、私はこの問題の解決策を共有しようと思いました。それは素晴らしい解決策ではありませんが、それはトリックを行います。
- NSDocumentControllerをサブクラス化し、以下を追加します。
+ (void) setCanOpenUntitledDocument: (BOOL) _canOpenUntitledDocument
{
canOpenUntitledDocument = _canOpenUntitledDocument;
} // End of setCanOpenUntitledDocument:
- (void) openDocument: (id) sender
{
// With iCloud enabled, the app keeps trying to run openDocument: on first launch (before apphasfinishedlaunching gets set.
// This method lets us check and see if the app has finished launching or not. If we try to open a document before
// its finished, then don't let it.
if(!canOpenUntitledDocument)
{
return;
} // End of appHasFinishedLaunching not set
[super openDocument: sender];
} // End of openDocument:
アプリデリゲートに以下を追加します。
- (void) applicationDidFinishLaunching: (NSNotification *) aNotification
{
// Finished launching. Let us open untitled documents.
[SQLProDocumentController setCanOpenUntitledDocument: true];
...
}
そしてその理由-ブレークポイントを設定することで、その前に呼び出されるかopenDocument
、呼び出されることがわかりました。つまり、これらのメソッドを追加しても意味がありません。繰り返しになりますが、これは優れたコードではありませんが、機能し、うまく機能します。(他の解決策のどれも私のために働いていません)。applicationDidFinishLaunching
applicationShouldOpenUntitledFile
applicationShouldHandleReopen:hasVisibleWindows: