gpt4 book ai didi

objective-c - 我是否必须在 objective-c 的 .h 文件中声明回调方法?

转载 作者:行者123 更新时间:2023-11-28 18:39:38 28 4
gpt4 key购买 nike

我有两个类 A 和 B。A 类给 B 类一个目标/ Action 对,B 类稍后回调。 target 是 self(= class A),action 是一个回调方法。回调稍后完成:

[target performSelector:action withObject:anObject];

方法 Action 只被这个回调调用。如果我不在 A 类的 .h 文件中声明该方法,它工作正常。但我的问题是,不在 .h 文件中声明它是一个糟糕的设计吗?由于该方法仅在回调中调用,我认为声明它不是必需的,不是吗?我的意思是,回调“performSelector”甚至无法在运行时检查该方法是否存在。那么你有什么建议呢?

最佳答案

I think it is not nescessary to declare it, is it?

不,不是,真的。我经常看到这种模式,事实上,我并没有声明这些回调/委托(delegate)方法。

I mean, the callback "performSelector" even can't check if the method exists at runtime.

但是是的,它可以,多亏了反射(reflection);就这样写吧:

if ([delegate respondsToSelector:@selector(someCallback:)]) {
[delegate someCallback:self];
}

但如果您真的担心这一点,最好使用 block 而不是委托(delegate)来进行简单的回调。

关于objective-c - 我是否必须在 objective-c 的 .h 文件中声明回调方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12834869/

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