将 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];
}];
我是 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];
}];