gpt4 book ai didi

ios - respondsToSelector 无法识别已实现的选择器

转载 作者:行者123 更新时间:2023-11-29 01:07:43 34 4
gpt4 key购买 nike

在 UIViewController 的一个简单子(monad)类中,我只是实现了一个选择器作为刷新 UI 的回调

-(void)afterfollowAction:(id)object{
//blabla
}

但最后发现respondsToSelector无法识别。测试代码:

SEL callback = @selector(afterFollowAction:);
BOOL test1 = [self respondsToSelector:callback]; //NO
BOOL test2 = [self respondsToSelector:@selector(afterFollowAction:)]; //NO
BOOL test3 = [[self class] instanceMethodForSelector: @selector(afterFollowAction:)]; //YES
BOOL test4 = [self respondsToSelector:@selector(viewWillDisappear:)]; //YES
[self performSelector:callback withObject:nil]; //crash

test2 显示不是局部变量回调的问题,

test4 显示它知道它是一个 UIViewController 并且 self 不是 nil

test3 显示实际上它知道选择器已实现

但是如果你用“performSelector”调用它,它会抛出异常“unrecognized selector”

我在网上搜索了一下,没有出现“:”或 nil 的错误;

我把选择器的声明放在了头文件中,但是没有用。

我重新启动了 Mac 和 iPhone,但结果相同。

这是一个简单的类,我没有在其中重新实现 respondsToSelector: 选择器。

那么,我是否错误地使用了 respondsToSelector?我只想在这个类之外进行回调。

环境:Mac OS X 10.11.3、Xcode 7.2.1、iOS 9.2.1

更新:没有匹配大小写的 find(cmd+F) 隐藏了 f/F 问题。感谢基兰!

最佳答案

应该是

SEL callback = @selector(afterfollowAction:);
BOOL test1 = [self respondsToSelector:callback]; //NO
BOOL test2 = [self respondsToSelector:@selector(afterfollowAction:)]; //NO
BOOL test3 = [[self class] instanceMethodForSelector: @selector(afterfollowAction:)]; //YES
BOOL test4 = [self respondsToSelector:@selector(viewWillDisappear:)]; //YES
[self performSelector:callback withObject:nil]; //crash

您正在使用大写“F”

关于ios - respondsToSelector 无法识别已实现的选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36148044/

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