ОК, я запускаю простой эксперимент с iOS GameKit. Шаги следующие:
-1. У меня есть NSString «myFunction» на iPad1.
-2. Я снимаю его через Bluetooth соединение с GameKit для iPad2. Кодировка - NSASCIIStringEncoding.
-3. iPad2 получает сообщение.
-4. iPad2 получает строку «myFunction» из полученных данных и записывает ее в отладчик, чтобы я мог сказать, что все прошло нормально. Он декодируется с использованием NSASCIIStringEncoding. Пока все хорошо.
-5. Я конвертирую myFunction в селектор, используя NSSelectorFromString ().
-6. Я выполняю селектор для объекта, который реализует - (void) myFunction {}
-7. Сбои iPad2 с жалобами на невозможность найти функцию myFunction на объекте.
Теперь, если я жестко закодирую строку «myFunction» в NSSelectorFromString () на шаге 5, она прекрасно работает. Я знаю в моей интуиции, это какая-то проблема кодирования. Я попытался кодировать строку с помощью NSUTF8StringEncoding, но затем программа не только по-прежнему аварийно завершает работу, но и записывает в ноль строку на шаге 4.
Я просмотрел все бесчисленные способы кодирования строк в справочнике классов NSString,
http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#
Но прежде чем я попробовал каждый из них по очереди увидеть, что прилипает к стене, мне было интересно, пытался ли кто-нибудь сделать что-то вроде того, что я пытаюсь сделать; отправка строк через Bluetooth для преобразования в селекторы на другой стороне и их выполнение.