[编辑]我编辑了问题以隔离问题并帮助其他人更好。dyld:找不到符号问题(NSMutableAttributedString似乎被强连接)
我用我的应用程序,这是在iOS 3.2及更高版本NSMutableAttributedString
类。我也瞄准3.1.2版本的设备;对于后向兼容性,我用下面的代码:
CFAttributedStringRef attributedString;
if (NSClassFromString(@"NSMutableAttributedString")) {
attributedString = (CFAttributedStringRef)[[[NSMutableAttributedString alloc]
/* init... to initialize an object */ ] autorelease];
} else {
attributedString = CFAttributedStringCreate(kCFAllocatorDefault,
(CFStringRef)NSLocalizedString(@"MessageInEllipse",
@"Message to show in an ellipse"),
(CFDictionaryRef)attributes);
}
}
在第3行,我直接使用类名NSMutableAttributedString
,但我预计到链接器被弱连接,所以它仅意味着nil
这里和应用程序将工作没有问题。
但是,我的应用在3.1.2设备上启动时崩溃,抱怨它无法找到符号NSMutableAttributedString
。看起来这个班级符号是强烈联系的。为什么会发生?
实际上,当框架本身可用于部署目标并且只有类缺失时,我发现依赖与框架的弱链接(以弱链接类标记)并不是最佳实践。我发布了一个答案来描述我最近发现的东西。但是,你引导我走向正确的方向,我很感激! – MHC 2011-03-12 22:03:58