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
所以,你能真正定义使用铛字符串文字的自定义类? 并且可以在类数组,字典和数量文字的改变?