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 回答