如何在 iOS 中使用 Swift 声明块?
How to declare blocks using Swift in iOS?
我正在尝试将我的 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);
}
在Swift中,块、函数和闭包是一回事,它们具有相同的签名并且可以互换。
所以这会给你这样的东西
var tapBlock: CGFlagsCell -> Void
可以在参数两边加上括号(如果只有一个则可选,如果有多个输入参数则推荐)和return类型(可选):
var tapBlock: (CGFlagsCell) -> (Void)
定义一个闭包变量 class :
var tapBlock: (parameterTypes) -> (returnType)
Swift 闭包是独立的功能块,可以在您的代码中传递和使用。 Swift 中的闭包类似于块 Objective-C
我正在尝试将我的 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);
}
在Swift中,块、函数和闭包是一回事,它们具有相同的签名并且可以互换。
所以这会给你这样的东西
var tapBlock: CGFlagsCell -> Void
可以在参数两边加上括号(如果只有一个则可选,如果有多个输入参数则推荐)和return类型(可选):
var tapBlock: (CGFlagsCell) -> (Void)
定义一个闭包变量 class :
var tapBlock: (parameterTypes) -> (returnType)
Swift 闭包是独立的功能块,可以在您的代码中传递和使用。 Swift 中的闭包类似于块 Objective-C