【问题标题】:Testing for a class method on UIView to maintain backward compatibility在 UIView 上测试类方法以保持向后兼容性
【发布时间】:2011-07-25 13:47:22
【问题描述】:

我正在尝试使用

transitionFromView

从 iOS 4 开始,这是 UIView 上的一个类方法。以下所有方法在 4.2 模拟器中都返回 false:

[UIView respondsToSelector:@selector(transitionFromView:)]
[UIView respondsToSelector:@selector(transitionFromView)]
[[UIView class] respondsToSelector:@selector(transitionFromView)]
[[UIView class] respondsToSelector:@selector(transitionFromView:)]

Stack 上的其他文章建议前两个方法之一应该返回 true。测试此方法的适当方法是什么,使其在运行 iOS 3 时不会崩溃?

谢谢。

【问题讨论】:

    标签: iphone uiview


    【解决方案1】:

    您缺少UIView 的选择器的一部分。您想使用以下

    BOOL responds = [[UIView class] respondsToSelector:@selector(transitionFromView:toView:duration:options:completion:)];
    

    【讨论】:

    • 你说得对,我没有意识到我可以用这种方式调用@selector。谢谢!
    • 你可以写[[UIView class] respondsToSelector:@selector(transitionFromView:toView:duration:options:completion:)]而不是[UIView respondsToSelector:@selector(transitionFromView:toView:duration:options:completion:)]
    【解决方案2】:

    respondsToSelector: 是实例方法,而不是类方法。您应该在 UIView 的特定实例上调用它。

    【讨论】:

    • 不,这是不正确的。您可以在类方法上调用 respondsToSelector:。 stackoverflow.com/questions/1135366/…
    • 哎呀...这很有趣...为什么文档只列出-(BOOL)respondsToSelector:(SEL)aSelector,而没有+(BOOL)respondsToSelector:(SEL)aSelector 方法?
    猜你喜欢
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多