gpt4 book ai didi

ios - respondsToSelector 在 UIButton 上为 "setTitle:"返回 YES 但没有这样的选择器

转载 作者:行者123 更新时间:2023-11-29 02:04:55 25 4
gpt4 key购买 nike

我正在使用 respondsToSelector: 并且大多数时候它工作正常。但有一种情况我得到了错误的结果:

UIButton* button = [[UIButton alloc] init];
if([button respondsToSelector:NSSelectorFromString(@"setTitle:")]) // returns YES
{
// try to call "setTitle:"
}

respondsToSelector: 返回 YES,但 UIButton 类中没有 setTitle: 选择器。有 setTitle:forState: 选择器,但这绝对不一样。

那么为什么respondsToSelector:返回YES?

最佳答案

响应选择器不仅仅检查公共(public)接口(interface),它还会采用它能找到的任何方法。我不记得 UIButton 的早期 API 是否直接公开了标题,但在内部它可能会在状态更改时调用。

尝试只对您实际需要验证存在的 API 使用 respondsToSelector: ,并注意通常有私有(private) API 后来公开,这也可能导致有趣的情况......

关于ios - respondsToSelector 在 UIButton 上为 "setTitle:"返回 YES 但没有这样的选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29895940/

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