我有两个类A和B.A类给B类一个目标/动作对,后面的B类回调。目标是self(= A类),action是回调方法。回调后来用:
完成[target performSelector:action withObject:anObject];
方法操作仅由此回调调用。如果我不在A类的.h文件中声明该方法,它工作正常。但我的问题是,在.h文件中没有声明它是一个糟糕的设计吗?由于该方法仅在回调中调用,我认为声明它并不是必需的,不是吗?我的意思是,回调“performSelector”甚至无法检查该方法是否存在于运行时。那你的建议是什么?
答案 0 :(得分:4)
我认为宣布它是不必要的,不是吗?
不,不是,真的。我经常看到这种模式,事实上,我并没有声明这些回调/委托方法。
我的意思是,回调“performSelector”甚至无法检查该方法是否存在于运行时。
但是,由于反思,可以;写这样的东西:
if ([delegate respondsToSelector:@selector(someCallback:)]) {
[delegate someCallback:self];
}
但是如果你真的很担心这个问题,你最好使用块来进行简单的回调而不是委托。
答案 1 :(得分:1)
为了清楚起见,我会在.h
中声明它(尽管没有必要),因为它是从B
公开访问的。