ExternalAccessory InputStream/OutputStreams равны нулю?
Я пытаюсь использовать InputStream/OutputStream синхронно (как обычные IOStreams) для чтения / записи на определенное устройство Bluetooth. Я знаю, что это можно сделать, потому что у нас есть некоторый код Objective C, который работает с нашим гаджетом - однако мы работаем со сторонней библиотекой C# и нам нужно, чтобы она работала в C#.
Я получил это далеко:
string protocol = <protocol string>
// Attempt to connect to device...
EASession _session = new EASession (myEAAccessory, protocol);
inStream = _session.InputStream;
outStream = _session.OutputStream;
Я вижу, что _session был выделен в памяти - Xamarin показывает мне, что теперь у него есть ненулевой указатель и тип данных - однако и InputStream, и OutputStream имеют значение null (поэтому я не могу их открыть, так как это вызывает исключение nullref).
Как я могу получить OutputStream и InputStream, чтобы не быть нулем?
(Я пытаюсь прочитать множество документов Apple, но все их примеры кода приведены в Objective-C, что я с трудом понимаю... а заявления Objective-C об управлении памятью не применимы?)
Кроме того, я проверил, что myEAAcessory не является нулевым, и это возвращает true:
myEAAcessory .ProtocolStrings.Contains (protocol);
1 ответ
Вам нужно перечислить внешние аксессуары, которые вы собираетесь использовать в вашем Info.plist.
На сайте Apple есть некоторая документация: http://developer.apple.com/library/ios/#featuredarticles/ExternalAccessoryPT/Introduction/Introduction.html#//apple_ref/doc/uid/TP40009502
Вот скриншот того, как установить это значение в Info.plist: http://screencast.com/t/AYmOWjf8wkL
(Это отсюда: https://bugzilla.xamarin.com/show_bug.cgi?id=1635).