4

私はExternalAccessoryFWで作業しており、周辺機器にデータを渡すことができます。

いくつかの値を保存しようとすると、奇妙な状況に直面してい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];すべてうまくいきます...

何か案が?

4

1 に答える 1

0

NSUserDefaults はメイン スレッドで動作します。おそらく、ディスクにシリアル化する NSMutableDictionary など、別のものを使用したいでしょう。

于 2013-08-05T13:52:48.497 に答える