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

zum*_*zum 19 objective-c-blocks swift

在Objective-C中,我这样做:

@property (nonatomic, copy) void(^completion)(MyObject * obj);
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*n R 45

相应的闭包属性将声明为

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

您可以设置属性

completion = {
    (obj : MyObject) -> Void in
    // do something with obj ...
}
Run Code Online (Sandbox Code Playgroud)

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

completion = {
    obj in
    // do something with obj ...
}
Run Code Online (Sandbox Code Playgroud)

  • @JTAppleCalendarforiOSSwift:不,就我所知,Swift编译器会自动处理它. (2认同)