我想将一个点传递给使用performSelectorOnMainThread调用的选择器的C++对象.简单地将指针转换为'id'(objc_object*)似乎不起作用.我总是可以编写自己的目标C包装类,但应该有一个相当标准的方法来做到这一点.我没有在苹果的文档中找到任何关于它的东西.
最好的方法是什么?
这就是我想要做的事情:
...
Foo *foo = new Foo(); // Foo is a C++ class
MyObject *myObj = [[MyObject alloc] init]; // Obj-C class
[myObj performSelectorOnMainThread:@selector(someMethod:) withObject:foo waitUntilDone:NO];
...
Run Code Online (Sandbox Code Playgroud)
谢谢!
无需制作自己的包装类; [NSValue valueWithPointer:]是为拳击指针设计的.只需使someMethod获取NSValue而不是原始指针,然后使用pointerValue提取指针.
(我相信performSelector*方法保留了它们的参数,以便保证对象通过调用,这就是为什么你不能只将随机值转换为该参数中的id.)
| 归档时间: |
|
| 查看次数: |
1919 次 |
| 最近记录: |