- (void)shootMissile {
//Send missile to delegate for storage
if ([delegate respondsToSelector:@selector(shootMissile)]) {
[delegate performSelector:@selector(shootMissile)];
}
}
委托函数表示将其委托给另一个文件中的另一个函数。
我不确定我是否会在javascript中遇到类似问题。
最佳答案
根据关于此问题How does a delegate work in objective-C?的第二个答案:
代表是一种设计模式。没有特殊的语法或语言支持。
该模式当然可以在Javascript中使用,因为Javascript中的函数是一类对象,因此可以将其作为参数传递给其他函数。
要在JS中重写示例:
function shootMissile(selector) {
if (selector.respondsTo(shootMissile)) {
selector.perform(shootMissile);
}
}
}
大概“选择器”是具有两个函数属性(即方法)的对象,分别称为“ respondsTo”和“ perform”。
上面看起来更自然(或至少功能更多)的版本是:
function shootMissile(canShootMissile, fireMissile, missile) {
if (canShootMissile(missile)) {
fireMissile(missile);
}
}
}