**修改了我的问题
我在将Objective-c迁移到Swift时遇到了困难。作为标题,如何在创建类后在属性中注入块。以下是我为Objective-C所做的工作。但是如何在Swift中实现呢?
部首:
@property (strong) void(^thisMethod)( ObjectA* a, ObjectB* b, ObjectC* c );
体:
ThisClass *thisClass = (ThisClass*) thisClass;
thisClass.thisMethod = ^(ObjectA* a, ObjectB* b, ObjectC* c) {
//method goes here
};
不确定这个问题是否听起来很愚蠢,但您的帮助非常受欢迎。非常感谢! :)
答案 0 :(得分:0)
在创建类之后,您不会覆盖方法。你只是在一个属性中存储一个块。在Swift中你会使用一个闭包。这适用于游乐场:
// Playground - noun: a place where people can play
class ObjectA {}
class ObjectB {}
class ObjectC {}
class ThisClass {
var thisClosure: ((a: ObjectA, b: ObjectB, c: ObjectC) -> Void)?
}
var thisClass = ThisClass()
thisClass.thisClosure = {
a, b, c in
// Method goes here
}
请注意,我已将thisClosure
属性声明为可选,因此它可以为nil;通过必须在初始化程序中设置属性,这使我不得不与原始代码产生太大差异。另请注意,在Swift中,您不需要在定义闭包本身时拼写出参数类型(行a, b, c in
没有类型),因为Swift可以从属性声明中计算出参数类型。 / p>