Objective c 我必须在目标c的.h文件中声明回调方法吗?
我有两个类A和B。类A给类B一个目标/动作对,B类稍后回调。目标是self(=类A),操作是回调方法。稍后将使用以下命令完成回调:Objective c 我必须在目标c的.h文件中声明回调方法吗?,objective-c,ios,callback,selector,Objective C,Ios,Callback,Selector,我有两个类A和B。类A给类B一个目标/动作对,B类稍后回调。目标是self(=类A),操作是回调方法。稍后将使用以下命令完成回调: [target performSelector:action withObject:anObject]; 方法操作仅由此回调调用。如果我不在类A的.h文件中声明该方法,它可以正常工作。但我的问题是,不在.h文件中声明它是一个糟糕的设计吗?由于该方法只在回调中调用,我认为不必声明它,不是吗?我的意思是,回调“performSelector”甚至不能检查该方法在运行时
[target performSelector:action withObject:anObject];
方法操作仅由此回调调用。如果我不在类A的.h文件中声明该方法,它可以正常工作。但我的问题是,不在.h文件中声明它是一个糟糕的设计吗?由于该方法只在回调中调用,我认为不必声明它,不是吗?我的意思是,回调“performSelector”甚至不能检查该方法在运行时是否存在。那么你的建议是什么呢?为了清晰起见,我会在
.h
中声明它(尽管它不是必需的),因为它是从B
公开访问的为了清晰起见,我会在.h
中声明它(尽管它不是必需的),因为它是从B
公开访问的
我认为没有必要申报,是吗
不,不是,真的。我经常看到这种模式,事实上,我并没有声明这些仅回调/委托的方法
我的意思是,回调“performSelector”甚至不能检查该方法在运行时是否存在
但是,是的,多亏了反思,它可以;写下这样的话:
if ([delegate respondsToSelector:@selector(someCallback:)]) {
[delegate someCallback:self];
}
但是如果您真的担心这个问题,最好使用块来进行简单的回调,而不是委托
我认为没有必要申报,是吗
不,不是,真的。我经常看到这种模式,事实上,我并没有声明这些仅回调/委托的方法
我的意思是,回调“performSelector”甚至不能检查该方法在运行时是否存在
但是,是的,多亏了反思,它可以;写下这样的话:
if ([delegate respondsToSelector:@selector(someCallback:)]) {
[delegate someCallback:self];
}
但是如果您真的担心这个问题,最好使用块来进行简单回调,而不是委托。不太好。OP似乎将选择器传递给了另一个类。另一个类不知道调用的方法的名称。不知道。OP似乎将选择器传递给了另一个类。另一个类不知道调用的方法的名称。