以下块属性的swift中的属性块声明等效是什么?

时间:2014-06-30 16:56:23

标签: swift objective-c-blocks

在Objective-C中我这样做:

@property (nonatomic, copy) void(^completion)(MyObject * obj);

在swift中执行此操作的正确方法是什么?

1 个答案:

答案 0 :(得分:45)

相应的闭包属性将声明为

class MyClass {
     var completion : ((MyObject) -> Void)? // or ...! for an implicitly unwrapped optional
}

您可以设置类似

的属性
completion = {
    (obj : MyObject) -> Void in
    // do something with obj ...
}

可以缩短(由于自动类型推断)到

completion = {
    obj in
    // do something with obj ...
}