我是否必须在目标c中的.h文件中声明一个回调方法?

时间:2012-10-11 08:01:47

标签: objective-c ios callback selector

我有两个类A和B.A类给B类一个目标/动作对,后面的B类回调。目标是self(= A类),action是回调方法。回调后来用:

完成
[target performSelector:action withObject:anObject];

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

2 个答案:

答案 0 :(得分:4)

  

我认为宣布它是不必要的,不是吗?

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

  

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

但是,由于反思,可以;写这样的东西:

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

但是如果你真的很担心这个问题,你最好使用块来进行简单的回调而不是委托。

答案 1 :(得分:1)

为了清楚起见,我会在.h中声明它(尽管没有必要),因为它是从B公开访问的。