Swift - 实例化后在属性中注入块

时间:2014-09-06 09:02:38

标签: objective-c swift

**修改了我的问题

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

不确定这个问题是否听起来很愚蠢,但您的帮助非常受欢迎。非常感谢! :)

1 个答案:

答案 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>