如何正确存储和删除数组中的块以进行回调

时间:2013-01-05 02:29:22

标签: objective-c objective-c-blocks

我正在尝试使用块在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”的调用者的正确方法是什么,以便我可以将该块存储在该视图或类的字典中,稍后再找到它以将其删除?

0 个答案:

没有答案