Objective c Swift-实例化后在属性中注入块
**修改我的问题 我在将Objective-c迁移到Swift时遇到了困难。作为标题,在创建属性的类之后,如何在属性中插入块。下面是我为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 ); 正文: 我不确定这个问题听起来是否愚蠢,但非常感谢您的帮助。非常感谢!:) 在创建方法的类之后,您不会重写该方法。您只是在属性中存储一个块。在
@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
}