Swift的闭包类似于OC中的block,所以我理解的用法基本可以参照block 唯一需要注意的就是格式问题了,现在将我探索的格式分享给大家
定义一个Person类:
import Cocoa
class Person: NSObject {
public var name:String
public var runBlock:((Void)->Void)?
init(name:String) {
self.name = name
super.init()
}
public func personRun(){
self.runBlock!()
}
}
从其中可以看出一个闭包的简单类型定义和调用,我觉得将它定义为可选类型是因为觉得它有可能为空。
接着定义一个Car类:
import Cocoa
class Car: NSObject {
public var Carname:String
init(Carname:String) {
self.Carname = Carname
super.init()
}
}
接着在main 中创建两个对象,实现传值:
let car = Car.init(Carname: "大众")
let jack = Person.init(name: "jack")
jack.runBlock = {(Void) in
print("\(jack.name)开着\(car.Carname)在公路上行驶")
}
jack.personRun()
闭包的赋值就在这里了,只要牢记这闭包的三个步骤:定义、调用、赋值三个的格式(写法)其他的跟block用起来应该还是类似的
查看打印结果:
可以看到Person 对象和 Car对象之间并没有用属性关联起来,但是却完成了传值,这大概就是我们经常讲的弱耦合吧。
最后呢,我的水平一般,如果有大神觉得我写的不对,一定要告诉我啊,我感激不尽。