gpt4 book ai didi

ios - 您如何覆盖新功能并使其向后兼容?

转载 作者:行者123 更新时间:2023-11-29 10:44:58 25 4
gpt4 key购买 nike

我想为我的 UIView 子类覆盖 setTintColor: 函数。在 iOS 7 中执行此操作没有问题,因为该功能是从该版本开始引入的。但是,我无法弄清楚如何使此功能向后兼容 iOS 6。以下将崩溃。

- (void)setTintColor:(UIColor *)tintColor
{
if ([super respondsToSelector:@selector(setTintColor:)]) {
// Crashes here with "unrecognized selector" in iOS 6, probably because
// defining setTintColor: makes respondsToSelector: return YES for all
// objects in the hiearchy regardless of whether it is defined at its
// level.
[super setTintColor:tintColor];
}
self.label.textColor = tintColor;
self.dividerLeft.backgroundColor = tintColor;
self.dividerRight.backgroundColor = tintColor;
}

最佳答案

你可以把条件改成这样

if ([UIView instancesRespondToSelector:(setTintColor:)])

你的代码不工作的原因是因为 super 只是 self 的一个特殊版本并且因为你的子类响应 setTintColor: 它会返回 YES。

关于ios - 您如何覆盖新功能并使其向后兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22700233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com