0

这段代码昨天还在工作:

id urlNSString = objc_msgSend(objc_getClass("NSString"), sel_registerName("stringWithUTF8String:"), "http://zmangames.com/product-details.php?id=1246");
objc_msgSend(objc_getClass("EAGLView"), sel_registerName("openURL:"), urlNSString);

我刚刚升级到 Xcode 5,现在它说该函数未定义。我正在做

#include <objc/message.h>
#include <objc/objc.h>
#include <objc/runtime.h>

这似乎在 /usr/include/objc 中,并且似乎包含函数的定义。我没有从整个项目中得到任何其他投诉。

Codesense 说定义如下所示:

OBJC_EXPORT id objc_msgSend(id self, SEL op, ...) __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
4

2 回答 2

0

试试#import <objc/runtime.h>吧。

于 2013-09-24T15:33:00.660 回答
0

知道了。没有足够仔细地检查错误。

Candidate function not viable: no known conversion from 'Class' (aka 'objc_class *') to 'id' (aka 'objc_object *') for 1st argument

只需要将 objc_getClass 的返回值从 to 转换Classid,如下所示:

id urlNSString = objc_msgSend((id)objc_getClass("NSString"), sel_registerName("stringWithUTF8String:"), "http://zmangames.com/product-details.php?id=1246");
objc_msgSend((id)objc_getClass("EAGLView"), sel_registerName("openURL:"), urlNSString);
于 2013-09-24T15:46:19.320 回答