gpt4 book ai didi

objective-c - 如果对象respondsTo仍然抛出警告

转载 作者:行者123 更新时间:2023-12-02 21:50:12 25 4
gpt4 key购买 nike

我正在开发一个项目,其中有一个具有 UIView 属性的类。我还定义了一个类,它是 UIView 的子类,它定义了某种方法。如果我有以下代码,我在构建时会收到警告:

// In this example, myView is UIView property which *may* contain a UIView or 
// my subclassed-UIView which has the myMethod method
if([myView respondsToSelector:@selector(myMethod)]){
[myView myMethod]
}

警告是“UIView 可能不会响应‘-myMethod’”。该警告显然不会阻止应用程序的构建,但我只是想弄清楚如何处理它。这是执行此操作的正确方法吗?有没有办法阻止这个警告?

最佳答案

警告只是因为编译器不知道该 View 是否是您的自定义子类。当然,在运行时它会正常工作,因为它将是一个子类。您有两种选择来修复它:

[myView performSelector:@selector(myMethod)];

(因此编译器根本不检查方法调用)

或者更好:

[(MyViewClass *)myView  myMethod];

这样编译器的行为就好像该对象确实是您的 View 子类(当然是在您执行检查之后)。

就此而言,检查您的类而不是方法可能更有意义:

if ([myView isKindOfClass:[MyViewClass class]]) { ...

关于objective-c - 如果对象respondsTo仍然抛出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3407805/

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