1

次から返された NSURL を保存できますか。

[[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil]

NSUserDefaults (または plist) で、アプリの起動時に iCloud コンテナーへの高速アクセスを有効にしますか?

現在、上記のコードは、コンテナー パスを返すのに数秒 (場合によっては 10 秒以上) かかる場合があります。これにより、アプリが返されるのを待つため、iCloud からユーザーのデータをロードする際に、目立って迷惑な遅延が発生します。

アプリが起動されるたびに NSURL パスがまったく同じであると想定しているため、後ですばやくアクセスできるように保存しても問題ありません。

私は自分のデバイスでこれを試してみましたが、問題なく動作します。「野生」でこれを行うのに問題があるのではないかと思っています.

4

1 に答える 1

2

それはおそらくうまくいくでしょう。しかし、それは問題を解決するのではなく、ただ動かしているだけです。このメソッドは、内部的にアプリ用に iCloud を起動して実行しているため (ネットワーク呼び出しが含まれる場合があります)、ブロックするようにブロックします。これはアプリの iCloud セットアップ プロセスの一部であるため、遅かれ早かれ実現するでしょう。その呼び出しを回避することはできますが、別の場所で遅延に遭遇することになります。

唯一の大きな落とし穴は、アプリが実行されていないときにユーザーが iCloud からログアウトするか、さらに悪いことに、iCloud からログアウトして別の iCloud アカウントにログインする可能性があることです。この URL を保存する場合は、ubiquityIdentityToken(ブロックせずに検索できる) の値も保存し、アプリの起動時にその値が変更されているかどうかを確認してください。また、リッスンしNSUbiquityIdentityDidChangeNotification、投稿された場​​合は、URL を再度検索して新しい値を保存します。

于 2013-02-21T22:44:25.570 に答える