[編輯]我編輯了問題以隔離問題並幫助其他人更好。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