Objective c 我想知道为什么调用[NSUbiquitouskeyValueStore synchronize]时应用程序被冻结

Objective c 我想知道为什么调用[NSUbiquitouskeyValueStore synchronize]时应用程序被冻结,objective-c,semaphore,freeze,nsubiquitouskeyvaluestore,Objective C,Semaphore,Freeze,Nsubiquitouskeyvaluestore,有时几分钟前它就停止冻结了,有时我等了10分钟,然后强制退出。当停止并查看线程调用时,我看到NSUbiquitouskeyValueStore _forceSynchronize方法中的信号量陷阱。这是Apple所说的: NSUbiquitousKeyValueStore类提供了一个编程接口,用于在iCloud中存储少量配置数据。您可以使用此类在同一用户拥有的不同设备上运行的应用程序实例之间同步信息。此类应用于在应用程序实例之间共享非关键数据,如首选项。您应该避免使用它来存储对应用程序行为至关重

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

这是Apple所说的:

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


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

苹果公司声明:

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

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

几个问题:

  • 它是在模拟器、设备中还是在OSX中
  • 您是否在尝试捕获异常时进行了调试?(或者更一般地说:您是否检查过没有例外情况)
  • 最后:你能发布悬挂的完整回溯吗
  • 几个问题:

  • 它是在模拟器、设备中还是在OSX中
  • 您是否在尝试捕获异常时进行了调试?(或者更一般地说:您是否检查过没有例外情况)
  • 最后:你能发布悬挂的完整回溯吗

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

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

    您到底想用NSUbiquitousKeyValueStore保存什么?您到底想用NSUbiquitousKeyValueStore保存什么?