【发布时间】:2018-05-29 06:00:07
【问题描述】:
我正在尝试将 Objective-C 项目转换为 Swift,这是 Objective-C 中的 .h 文件之一:
typedef void(^PrintBlock)(HLPrinter *printer);
@interface ShoppingViewController : UIViewController
@property (copy, nonatomic) PrintBlock printBlock;
@end
在.m文件中,有一个函数:
HLPrinter *printer = [self getPrinter];
if (_printBlock) {
_printBlock(printer);
}
这就是我将它转换成 Swift 的方式:
typealias PrintBlock = (_ printer: HLPrinter?) -> Void
但是当我尝试将上面的函数转换为 Swift 时,当我尝试声明一个类型为 PrintBlock 的变量时,我收到了一个 'Non-nominal type 'PrintBlock' (aka '(Optional<HLPrinter>) -> ()') does not support explicit initialization' 错误:
let pb = PrintBlock()
我不熟悉 Objective-C,那么我应该如何将带有 _printerBlock 的函数转换为 Swift?
【问题讨论】:
-
您正在使用不允许执行的 PrintBlock() 初始化 PrintBlock
标签: objective-c swift typedef type-alias