因此,对于每个新的操作系统,都会声明一堆方法已弃用。对我来说奇怪的是,如果我想仍然支持 iOS5 和 iOS6,我必须同时使用已弃用的方法和替换方法,比如 UILabel
的 minimumScaleFactor
over 最小字体大小
。
如果我将 myLabel.minimumFontSize
替换为 myLabel.minimumScaleFactor
那么我的应用程序将在 iOS5 中崩溃。
所以我将 if
与 -respondsToSelector:
结合使用来确定操作系统是 5 还是 6,并使用 minimumScaleFactor
或 minimumFontSize
相应地。
问题是我可能不得不在我的代码中编写一堆 if
和 respondsToSelectors
,这感觉很愚蠢。
是否有更好的方法来处理弃用问题?
最佳答案
我创建了可以在任何 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/