0

我有两个类 A 和 B。A 类给 B 类一个目标/动作对,B 类稍后会回调。目标是 self (= class A),action 是一个回调方法。回调稍后通过以下方式完成:

[target performSelector:action withObject:anObject];

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

4

2 回答 2

4

我觉得没必要申报吧?

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

我的意思是,回调“performSelector”甚至无法检查该方法在运行时是否存在。

但是可以,多亏了反思;写这样的东西:

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

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

于 2012-10-11T08:06:37.850 回答
1

为了清楚起见,我会声明它.h(尽管没有必要),因为它是从B.

于 2012-10-11T08:06:13.247 回答