我有这个代码,需要将它移植到弧线,但我不知道如何:
case FIELDTYPE_OBJECT:
className = [fieldType substringWithRange:NSMakeRange(2, [fieldType length]-3)];
rel = class_createInstance(NSClassFromString(className), sizeof(unsigned));
Class theClass = [rel class];
if ([rel isKindOfClass:[DbObject class]]) {
//Load the record...
NSInteger Id = [rs intForColumn:[theClass relationName]];
if (Id==0) {
fieldValue = [rel init];
} else {
Db *db = [Db currentDb];
fieldValue = [db loadById: theClass theId:Id];
}
}
break;
错误是:
error: 'class_createInstance' is unavailable: not available in automatic reference counting mode
如何替换它?
我需要在运行时构建类对象。
答案 0 :(得分:3)
最直接的解决方案是添加另一个文件,其中设置了-fno-objc-arc,并且其函数调用了如上所述的class_createInstance()。
答案 1 :(得分:1)
试试这个:
#include <objc/objc-runtime.h>
id object = [[NSClassFromString(@"TheClassName") alloc] init];
答案 2 :(得分:1)
创建一个单独的.h
/ .c
文件并添加如下内容。
id const
MyCreateInstanceOfClass(Class const class)
{
id instance = class_createInstance(class, 0);
return instance;
}
#include
.h
,并将其调用。无需为每个文件添加-fno-bjc-arc
开关。