ExternalAccessory和NSUserDefaults奇怪的问题

时间:2013-07-24 14:13:52

标签: iphone ios bluetooth nsuserdefaults

我正在使用ExternalAccessory FW并能够将数据传递到外围设备。

我正面临一个奇怪的情况,当我试图将某些值保存到NSUserDefaults时,我得到了这个(看起来像)无关的错误:

UISupportedExternalAccessoryProtocols = com.xxxxx.yyy.zz
2013-07-24 17:01:39.181 myApp[791:907] ERROR - opening session failed
2013-07-24 17:01:39.182 myApp[791:907] ERROR - /SourceCache/ExternalAccessory/ExternalAccessory-213.3/EASession.m:-[EASession dealloc] - 137 unable to close session for _accessory=0x2088cdb0 and sessionID=65536

与外围设备的连接已经死亡。

写入NSUserDefaults的代码:

NSInteger transactionId = [[NSUserDefaults standardUserDefaults] integerForKey:kTransactionId];
transactionId = transactionId % NSIntegerMax + 1;
[[NSUserDefaults standardUserDefaults] setInteger:transactionId forKey:kTransactionId];
[[NSUserDefaults standardUserDefaults] synchronize];

如果我评论[[NSUserDefaults standardUserDefaults] setInteger:transactionId forKey:kTransactionId];,一切正常......

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

NSUserDefaults在主线程中工作。也许你想要使用不同的东西,也许是一个NSMutableDictionary,然后你可以序列化到磁盘。