我能得到铛使用自定义类Objective-C的文字对象?(Can I get clang to us

2019-09-21 03:16发布

GCC的文档提到了一个-fconstant-string-class参数,可以让您更改用于类@"Objective-C string literal"的情况。 我觉得这不会出现铿锵工作,使用该资料来源:

#import <stdio.h>
#import <objc/runtime.h>

@interface ConstantString
{
    Class isa;
    char *c_string;
    unsigned int len;
}
@end
@implementation ConstantString

- (Class)class {return isa;}

@end

int main(int argc, char *argv[])
{
    fprintf(stderr, "%s\n", class_getName([@"foo" class]));
    return 0;
}

编译该编译器以这种方式:

$铛-v

苹果铛版本4.0(标签/苹果/铛-421.10.60)(基于LLVM 3.1svn)

目标:x86_64的 - 苹果darwin12.0.0

线程模型:POSIX

$铛-fconstant串级= ConstantString -lobjc constantstring.m

对于建筑x86_64的未定义符号:

“___CFConstantStringClassReference”,从引用:

  CFString in constantstring-C7icsk.o ld: symbol(s) not found for architecture x86_64 

铛:错误:连接器命令,退出代码1失败(使用-v看调用)

如果我对基金会的链接,然后我发现它仍然使用默认的常量字符串类:

$铛-fconstant串级= ConstantString -lobjc constantstring.m -framework基金会

$ ./a.out

__NSCFConstantString

所以,你能真正定义使用铛字符串文字的自定义类? 并且可以在类数组,字典和数量文字的改变?

文章来源: Can I get clang to use custom classes for Objective-C literal objects?