用法跟OC的block是一样一样的,基本格式是 { ()->() in }
那么当类的对象持有闭包,闭包的代码块里持有类的对象的时候,必然也会出现循环引用导致对象无法被释放的问题。
在OC中,我们用一个弱指针去持有一个对象,然后在block的代码块里用这个弱指针去解决这个问题,代码如下:
__weak __typeof(&*self)weakSelf = self;
Swift其实也一样,写的更简单一点而已
weak var weakSelf =self
如果是在闭包里用的话,Swift还有种更简单的写法
// 这是一个闭包
{ [weak self] () in
//然后在闭包里直接写 self 就可以了
}
网友评论