iOS 3.1.3上的NSMutableAttributedString

我正处理一个非常奇怪的情况。我正在将Attributed Strings实现到我的iOS应用程序中,并且我发出警告,因为它们可用于iOS 3.2及更高版本。因为我仍然支持iPhone上的3.1.3,所以我知道我必须在使用它们之前弱化链接CoreText并且可能需要编译时间。 我弱化了这个框架,但出于好奇,我只是按原样使用该类并在3.1.3设备上运行它...它的工作原理。我在这里错过了什么,我很困惑,为什么这不会崩溃。我100%肯定这是一个3.1.3设备,但是NSMutableAttributedString是3.1.3上的隐藏类,因此实际上因为objective-c的动态特性而起作用了吗?     
已邀请:
我是OHAttributedLabel类的作者。 谢谢你使用它! 您的行为很奇怪,因为OHAttributedLabel使用CoreText框架在屏幕上绘制NSAttributedStrings。 由于CoreText仅在iOS 3.2之后可用,我无法看到它如何在iOS 3.2下运行,尤其是iOS 3.1.3 ......     
它真的有效,而不仅仅是没有崩溃? 根据设置,不存在的类变为
nil
。请注意,在Objective-C中,您可以向
nil
发送消息。然后它只返回
nil
0
。然后
[[NSAttibutedString alloc] init]
可能会返回
nil
,而不会崩溃。     
CoreText是在iOS 3.2中引入的。如果您对其进行弱链接,则应用程序将启动,但在调用CoreText函数时,它将在第一个实例上崩溃。 为了仍然与早期版本兼容,您可以通过使用Quartz绘制文本来弱连接并避免CT代码。您将检测设备上是否存在CT并且如果是,则使用它,否则您将获得绘图的粗略回退机制。     

要回复问题请先登录注册