iphone - ExternalAccessory 和 NSUserDefaults 奇怪的问题

标签 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]; 一切正常...

有什么想法吗?

最佳答案

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

关于iphone - ExternalAccessory 和 NSUserDefaults 奇怪的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17836552/

相关文章:

iphone - 将 NSDecimalNumber 与 NSDecimalNumber 相乘返回 0

ios - UITableView 的动态高度(不是 Cell)

ios - 在 NSData 上使用 .forEach

bluetooth - Android Things 和蓝牙

ios - 找不到 IBeacon

ios - iOS 8.3 iPad 上的自定义 UIWindow 可在模拟器上运行,但不能在设备上运行

iphone - UINavigationController 如何跟踪多个 UIViewController?

iphone - 如何交换 NSMutableArray 中的值?

android - For IOS 中的 C++ 网络库

android - putExtra 中的蓝牙适配器