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

Objective c Swift-实例化后在属性中注入块,objective-c,swift,Objective C,Swift,**修改我的问题 我在将Objective-c迁移到Swift时遇到了困难。作为标题,在创建属性的类之后,如何在属性中插入块。下面是我为Objective-C所做的工作。但如何在Swift中实现 标题: @property (strong) void(^thisMethod)( ObjectA* a, ObjectB* b, ObjectC* c ); 正文: 我不确定这个问题听起来是否愚蠢,但非常感谢您的帮助。非常感谢!:) 在创建方法的类之后,您不会重写该方法。您只是在属性中存储一个块。在

**修改我的问题

我在将Objective-c迁移到Swift时遇到了困难。作为标题,在创建属性的类之后,如何在属性中插入块。下面是我为Objective-C所做的工作。但如何在Swift中实现

标题:

@property (strong) void(^thisMethod)( ObjectA* a, ObjectB* b, ObjectC* c );
正文:


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

在创建方法的类之后,您不会重写该方法。您只是在属性中存储一个块。在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行没有类型,因为Swift可以从属性声明中计算出参数类型。

这不是一个方法,而是一个包含块的属性。是的,在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
}