iOS:通过蓝牙的 NSString 然后转换为选择器,失败

发布于 2024-11-01 04:21:59 字数 997 浏览 0 评论 0原文

好的 - 我正在使用 iOS GameKit 进行一个简单的实验。步骤如下:

-1。我在 iPad1 上有一个 NSString 'myFunction'。
-2。我通过 GameKit 与 iPad2 的蓝牙连接进行拍摄。编码为 NSASCIIStringEncoding。
-3。 iPad2 收到消息。
-4。 iPad2 从收到的数据中获取字符串“myFunction”,并将其记录到调试器中,以便我可以判断它是否成功。它使用 NSASCIIStringEncoding 进行解码。到目前为止还不错。
-5。我使用 NSSelectorFromString() 将“myFunction”转换为选择器。
-6。我在实现 -(void)myFunction{}
的对象上执行选择器 -7。 iPad2 崩溃,抱怨无法在对象上找到函数 myFunction。

现在,如果我在第 5 步将字符串 'myFunction' 硬编码到 NSSelectorFromString() 中,它就会完美地工作。我直觉地知道这是一些编码问题。我尝试使用 NSUTF8StringEncoding 对字符串进行编码,但不仅程序仍然崩溃,而且字符串在步骤 4 中被记录为 null。

我浏览了 NSString 类参考中所有对字符串进行编码的无数方法,
http://developer .apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#
但在我依次尝试其中每一个,看看什么粘在墙上之前,我想知道是否有其他人尝试过做像我正在尝试的事情;通过蓝牙发送字符串以转换为另一侧的选择器并执行。

Ok- I'm running a simple experiment with iOS GameKit. The steps are these:

-1. I have a NSString 'myFunction' on iPad1.
-2. I shoot it over a bluetooth connection with GameKit to iPad2. Encoding is NSASCIIStringEncoding.
-3. iPad2 receives the message.
-4. iPad2 gets the string 'myFunction' from the data it received, and logs it to the debugger so that I can tell it came through alright. It is decoded using NSASCIIStringEncoding. Good so far.
-5. I convert 'myFunction' to a selector using NSSelectorFromString().
-6. I perform the selector on an object which implements -(void)myFunction{}
-7. iPad2 crashes complaining about not being able to find the function myFunction on the object.

Now, if I hard-code the string 'myFunction' into NSSelectorFromString() on step 5, it works beautifully. I know in my gut this is some encoding problem. I tried encoding the string with NSUTF8StringEncoding, but then not only does the program still crash, but the string is logged as null in step 4.

I looked through all the myriad ways to encode strings in the NSString class reference,
http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#

But before I try each one of them in turn to see what sticks to the wall, I was wondering if anyone else has tried to do something like what I'm trying; sending strings over bluetooth to be converted to selectors on the other side and performed.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ぇ气 2024-11-08 04:21:59

您必须序列化并发送数据。
看看这是否有帮助

you will have to serialize and send the data.
See if this helps

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文