我正在尝试使用块在js中实现以下模式以用于目标c:
//add callback whenever message is received
socket.on('messsage', function(data) {
console.log(data);
});
//remove all callbacks for message
socket.removeAllListeners('message');
我可以复制回调并将其存储在字典中,稍后使用以下代码调用它:
typedef void (^onBlock)(NSDictionary *);
NSMutableDictionary *onblocks;
-(void) on:(NSString *)msg withBlock:(id)callback {
NSMutableArray *onb = [onblocks objectForKey:msg];
if (!onb)
onb = [[NSMutableArray alloc] initWithCapacity:0];
[onb addObject:callback];
[onblocks setObject:onb forKey:msg];
}
- (void)callCallback:(NSString *)name withData:(NSDictionary *)data {
NSMutableArray *r = [onblocks objectForKey:name];
for (onBlock onblock in r) {
onblock(data);
}
}
识别调用“on”的调用者的正确方法是什么,以便我可以将该块存储在该视图或类的字典中,稍后再找到它以将其删除?