我正在尝试将Objective C源代码转换为swift,我已经搜索了很多更改Blocks的语法。
这是我想要切换到Swift的Objective C代码:
class.h文件:
@property (nonatomic, copy) void (^tapBlock)(CGFlagsCell *);
+ (NSString *)cellIdentifier;
Class.m文件:
self.tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapCell)];
- (void)didTapCell {
self.tapBlock(self);
}
答案 0 :(得分:0)
在Swift中,块,函数和闭包是相同的,它们具有相同的签名并且可以互换。
所以这会给你这样的东西
var tapBlock: CGFlagsCell -> Void
您可以在参数周围添加括号(如果只有一个,则为可选项,如果有多个输入参数则建议使用)和返回类型周围(可选):
var tapBlock: (CGFlagsCell) -> (Void)
答案 1 :(得分:0)
将闭包定义为类的变量:
var tapBlock: (parameterTypes) -> (returnType)
Swift Closures是一个独立的功能块,可以在代码中传递和使用。 Swift中的闭包类似于块Objective-C