У меня была такая же проблема.Я разрабатывал приложение, которое бы открывал внешний Bluetooth-аксессуар через определенный промежуток времени, считывал некоторые данные, а затем закрывал потоки.Это работало нормально в течение нескольких дней, а затем однажды вдруг перестало работать именно с этой проблемой.Сообщение также было зарегистрировано на консоли.
2015-06-20 23:54:43.371 MyApp[2083:404019] ERROR - opening session failed
1 2015-06-20 23:54:43.371 MyApp[2083:404019] ERROR - /SourceCache/ExternalAccessory/ExternalAccessory-288.20.7/ EASession.m:-[EASession dealloc] - 141 unable to close session for _accessory=0x174018750 and sessionID=65536
Документация Apple ясна, только один экземпляр каждого протокола может быть открыт одновременно, и любой предыдущий экземпляр автоматически освобождается.Но почему вдруг iOS не смогла освободить предыдущую EASession, когда она работала хорошо в течение нескольких дней.
Я был озадачен и провел три дня, ударяя головой о стену.Я искал Google и попал сюда, я прочитал руководства Apple по общению с внешними аксессуарами и руководство по программированию NSStream.Код был верен.
Наконец, на третий день в углу моего стола послышался звуковой сигнал, в моем Android-телефоне кончился сок.У меня в голове погасла лампочка.Я выключил телефон и альт, проблема на устройстве iOS исчезла.
Это действительно проблема с радиочастотами, а не проблема программирования, но я привожу здесь свою историю, если кто-нибудь еще столкнется с этой проблемой, Googleприведет тебя сюда.Выключите все другие радиомодули Bluetooth в непосредственной близости, поскольку они являются источниками шума и могут привести к этой проблеме.