我想知道为什么我在调用[NSUbiquitouskeyValueStore同步]时冻结app

时间:2012-06-24 07:27:32

标签: objective-c semaphore freeze nsubiquitouskeyvaluestore

有时它会在几分钟前停止冻结,有时我会等待10分钟然后强制退出它。当停止并查看线程调用时,我会看到来自NSUbiquitouskeyValueStore _forceSynchronize方法的信号量陷阱。

3 个答案:

答案 0 :(得分:0)

这就是Apple所说的:

NSUbiquitousKeyValueStore 类提供了一个用于在iCloud中存储少量配置数据的编程接口。您可以使用此类来同步在同一用户拥有的不同设备上运行的应用程序实例之间的信息。此类应用于在应用程序的实例之间共享非关键数据,例如首选项。您应该避免使用它来存储对应用程序行为至关重要的数据。

此类用于使用属性列表对象类型仅存储少量数据: NSNumber,NSString,NSDate,NSData,NSArray或NSDictionary 。您可以使用此数据为用户创建更加无缝的体验。例如,在多个设备上运行的杂志应用程序可能存储正在读取哪个版本的杂志以及用户当前正在阅读哪个页面。不要使用键值存储来存储需要频繁更新的常规应用程序数据或数据。应用程序的键值存储区中的可用空间总量限制为1 MB。 (还有一个按键限制,当前设置为1 MB,最多允许1024个键。)如果您尝试写入超过这些配额的数据,则写入尝试将失败并且旧值(如果任何)将保持不变。

答案 1 :(得分:0)

几个问题:

  1. 是在模拟器,设备中还是在OS X中?
  2. 在尝试捕获异常时是否进行了调试? (或者更一般地说:你是否检查过没有例外)?
  3. 最后:你可以发布挂起的完整回溯吗?

答案 2 :(得分:0)

如果在模拟器中运行,请退出模拟器并再次构建并运行该应用。