【问题标题】:I wonder why I got freeze of app when call [NSUbiquitouskeyValueStore synchronize]我想知道为什么我在调用 [NSUbiquitouskeyValueStore 同步] 时会冻结应用程序
【发布时间】:2012-06-24 07:27:31
【问题描述】:

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

【问题讨论】:

  • 你到底想用 NSUbiquitousKeyValueStore 保存什么?

标签: objective-c semaphore freeze nsubiquitouskeyvaluestore


【解决方案1】:

这是苹果的声明:

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

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

【讨论】:

    【解决方案2】:

    几个问题:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多