目标C:如何支持弃用的方法

Zol*_*tók 3 objective-c deprecated ios

因此,对于每个新操作系统,都会声明一组方法已被弃用.我奇怪的是,如果我想还是支持的iOS5和iOS6的我一定要同时使用过时的和替代方法,像UILabelminimumScaleFactorminimumFontSize.

如果我更换myLabel.minimumFontSizemyLabel.minimumScaleFactor我的应用程序将崩溃在iOS5.

因此,我使用ifwith -respondsToSelector:来查明操作系统是5还是6并使用minimumScaleFactorminimumFontSize相应.

问题是我可能不得不在我的代码中编写一堆ifs并且respondsToSelectors感觉很愚蠢.

有没有更好的方法来处理折旧?

Max*_*kin 6

我创建了可以在任何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];
    }
}
Run Code Online (Sandbox Code Playgroud)