objective-c - Objective-C : How to support deprecated methods

标签 objective-c ios deprecated

因此,对于每个新的操作系统,都会声明一堆方法已弃用。对我来说奇怪的是,如果我想仍然支持 iOS5 和 iOS6,我必须同时使用已弃用的方法和替换方法,比如 UILabelminimumScaleFactor over 最小字体大小

如果我将 myLabel.minimumFontSize 替换为 myLabel.minimumScaleFactor 那么我的应用程序将在 iOS5 中崩溃。

所以我将 if-respondsToSelector: 结合使用来确定操作系统是 5 还是 6,并使用 minimumScaleFactor minimumFontSize 相应地。

问题是我可能不得不在我的代码中编写一堆 ifrespondsToSelectors,这感觉很愚蠢。

是否有更好的方法来处理弃用问题?

最佳答案

我创建了可以在任何 ios 中使用的函数:

void AbsSdk30_upg60_UILabel_setMinimumScaleFactor(UILabel * label, CGFloat minimumScaleFactor) {
    if ([label respondsToSelector: @selector(setMinimumScaleFactor:)]) {
        [label setMinimumScaleFactor: minimumScaleFactor];
    }
    else {
        const CGFloat curFontSize = label.font.pointSize;
        const CGFloat fontSize = (0.0 == curFontSize) ? [UIFont labelFontSize] : curFontSize;
        [label setMinimumFontSize: fontSize * minimumScaleFactor];
    }
}

关于objective-c - Objective-C : How to support deprecated methods,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12639172/

相关文章:

android - 如何在没有弃用方法 findPreference 的情况下为 android 4.0 + 设置首选项摘要

ruby - 在 Ruby 中标记已弃用代码的最佳实践?

objective-c - 如何在另一个 modalViewController 退出后更新 modalViewController

iphone - 我应该担心 NSUserDefaults 中的冲突吗?

iphone - NSString 到 int 问题

iphone - 我们可以为 UITableview 的滚动条设置自定义图像吗?

iphone - 核心剧情: Displaying several graphs in a single page?

python - 在需求文件中添加什么

objective-c - 使用文件创建 iCloud 文件夹

iphone - Core Data Cocoa 错误 1570。无法保存多个实体对象