闭包是否会对在其作用域内创建的对象创建强引用?
创始人
2024-12-11 17:00:16
0

闭包在使用外部变量时会对其创建一个强引用,因此如果这个变量指向一个对象,那么该对象也会被创建一个强引用。但如果在闭包内部使用let或者weak来修饰变量,那么就可以避免这个问题。如下示例:

class MyClass {
    var name = "John"
    deinit {
        print("MyClass is deallocated")
    }
}

var closure: (() -> Void)?

func createClosure() {
    let object = MyClass()
    object.name = "Alice"
    
    // 在闭包内部使用weak修饰变量,避免创建强引用
    closure = { [weak object] in
        if let object = object {
            print("Name is \(object.name)")
        }
    }
    
    closure?()
}

createClosure() // 输出 "Name is Alice"
closure = nil // MyClass is deallocated

相关内容

热门资讯

wepoke辅助有挂!wpk德... wepoke辅助有挂!wpk德州透视辅助,aapoker插件(详细透视挂教程);原来确实真的有挂(需...
德州ai机器人!nzt德州辅助... 德州ai机器人!nzt德州辅助,nzt德州果然真的有挂(详细助手教程)1、玩家可以在德州ai机器人软...
wepoke智能ai!wepo... wepoke智能ai!wepoke计算辅助(透视辅助)wepoker(一般真的有挂);支持2-10人...
wpk俱乐部!wpk长期盈利打... wpk俱乐部!wpk长期盈利打法教学,wPK一贯真的有挂,详细教程,(有挂规律)1、进入游戏-大厅左...
德扑之星有作弊!微扑克ai机器... 1、德扑之星有作弊!微扑克ai机器人可以回事,wepoke ai(详细辅助教程);详细教程。2、德扑...
德扑之星作弊!德扑之星可以让系... 1、德扑之星作弊!德扑之星可以让系统给好牌,手机德州总是是有挂(详细ai辅助软件教程);代表性(透视...
WePoKe透视挂!wopok... WePoker透视辅助版本解析‌,WePoKe透视挂!wopoker辅助器免费版v2.0,wePok...
wpk辅助挂!wpk德州透视辅... wpk辅助挂!wpk德州透视辅助,WPK的确是有挂的,详细教程,(有挂攻略)1、进入游戏-大厅左侧-...
aa扑克辅助!wepoke辅助... aa扑克辅助!wepoke辅助透视教程,菠萝德州辅助神器(详细透视挂教程);原来确实真的有挂(需添加...
德扑ai助手!线上德州辅助软件... 德扑ai助手!线上德州辅助软件有用,德州ai原来是有挂(详细ai人工智能教程)是一款可以让一直输的玩...