将 objective C 匿名函数更改为非匿名函数

Change objective C anonymous function to non anonymous one

我是 objective c 的新手,致力于 swift.io 并尝试将其匿名回调转换为非匿名函数。

基本上尝试转换

[self.Socket on:@"connect" callback:^(NSArray* data, SocketAckEmitter* ack) {
    NSLog(@"socket connected");
}];

类似

 [self.Socket on:@"connect" callback:connectTestCallback];

我尝试定义一个我将调用的函数

- (void) connectTestCallback:(NSArray* )data withAck:(SocketAckEmitter *)ack
{
    NSLog(@"socket connected");
}

但我不确定我是否应该这样定义它,也不知道如何称呼它。我试过将其称为 callback:@selector(connectTestCallback) 但显然这不起作用。

以下是 "on" 函数的定义。

- (void)on:(NSString * __nonnull)event callback:(void (^ __nonnull)(NSArray * __nonnull, SocketAckEmitter * __nonnull))callback;

"anonymous function" 是构建闭包的块。与函数和方法不同,闭包存储其创建环境,因此您可以在代码中访问它。但是如果实际参数有足够的数据来做你想做的事情,你可以简单地发送消息到 self 来执行 "named" 方法:

[self.Socket on:@"connect" callback:^(NSArray* data, SocketAckEmitter* ack) 
{
 [self connectTestCallback:data withAck:ack];
}];