gpt4 book ai didi

iphone - Objective-c 中的@selector 行为不符合预期

转载 作者:行者123 更新时间:2023-12-03 20:58:13 25 4
gpt4 key购买 nike

我有点困惑,我已经为此工作了几个小时,并在谷歌上搜索,但没有任何真正的线索。我想利用 @selector 在 Objective-C 中为我的 iPhone 应用程序创建回调。

第 1 类:

- (void) someMethod {    
// create selector
SEL successCallback = @selector(successMethod);

// call some service with caller and selector
[class2 dispatchSomeEvent:self callback:successCallback];

// here's the call back method
- (void) successMethod {
NSLog(@"Callback success");
}
}

第 2 类:

// some event
- (void) dispatchSomeEvent:(id) caller selector:(SEL) successCallback {
// catch the event and execute callback
if ([caller respondsToSelector:successCallback]) {
[caller successCallback];
}
}

条件respondsToSelector将通过,但下一行的回调将失败。但是,如果我这样做:

// catch the event and execute callback
if ([caller respondsToSelector:successCallback]) {
[caller successMethod];
}

因此,我没有使用我传递的选择器,而是直接输入方法名称......并且它有效!

我得到的错误是这样的:

unrecognized selector sent to instance 0x6c37f70

这是怎么回事?

提前致谢!

最佳答案

您应该使用 -performSelector 方法调用您的选择器:

if ([caller respondsToSelector:successCallback]) {
[caller performSelector:successCallback];
}

关于iphone - Objective-c 中的@selector 行为不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3383623/

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