亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

swift閉包的循環引用

2019-11-09 14:22:46
字體:
來源:轉載
供稿:網友

例子是一個簡單通訊錄,列表界面點擊添加聯系人按鈕跳到添加界面,添加聯系人后返回到列表界面ListVC,但是添加界面DetailVC沒有釋放

////  ListVC.swift//  contract////  Created by targetcloud on 2017/2/11.//  Copyright © 2017年 targetcloud. All rights reserved.//import UIKitclass ListVC: UITableViewController {        var personDataSource=[Person]()    override func viewDidLoad() {        super.viewDidLoad()        loadData { (list) in            PRint(list)            self.personDataSource += list            self.tableView.reloadData()        }    }        private func loadData(completion:@escaping (_ listblock: [Person])->()) ->() {        DispatchQueue.global().async {            print("正在努力加載中...")            Thread.sleep(forTimeInterval: 2)            var arrayM :[Person] = [Person]()            for i in 0..<20{                let p = Person()                p.name = "name - /(i)/(arc4random_uniform(100))"                p.phone = "138"+String(format: "%08d", arc4random_uniform(100000000))                p.title = "Boss"                arrayM.append(p)            }            DispatchQueue.main.async {                completion(arrayM)            }        }    }    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {        return personDataSource.count    }        override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {        let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath)        cell.textLabel?.text = personDataSource[indexPath.row].name        cell.detailTextLabel?.text = personDataSource[indexPath.row].phone        return cell    }            @IBAction func newClick(_ sender: Any) {        performSegue(withIdentifier: "new2detail", sender: nil)    }        override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {        tableView.deselectRow(at: indexPath, animated: true)        performSegue(withIdentifier: "list2detail", sender: indexPath)    }    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {        let vc = segue.destination as! DetailVC        if let indexPath = sender as? IndexPath{            vc.person = personDataSource[indexPath.row]            vc.completionBlock = {                self.tableView.reloadRows(at: [indexPath], with: .automatic)            }        }else{//new person            vc.completionBlock = {                guard let p = vc.person else {                    return                }                self.personDataSource.insert(p, at: 0)                self.tableView.reloadData()            }        }    }}

////  DetailVC.swift//  contract////  Created by targetcloud on 2017/2/11.//  Copyright © 2017年 targetcloud. All rights reserved.//import UIKitclass DetailVC: UITableViewController {    var person : Person?    var completionBlock : (()->())?        @IBOutlet weak var nameTF: UITextField!    @IBOutlet weak var titleTF: UITextField!    @IBOutlet weak var phoneTF: UITextField!        override func viewDidLoad() {        super.viewDidLoad()        if person != nil{            nameTF.text = person?.name            phoneTF.text = person?.phone            titleTF.text = person?.title        }    }    @IBAction func saveClick(_ sender: Any) {        if person == nil{//new person            person = Person()        }                person?.name = nameTF.text        person?.phone = phoneTF.text        person?.title = titleTF.text        completionBlock?()        _=navigationController?.popViewController(animated: true)    }}以下這段代碼有問題

vc.completionBlock = {                guard let p = vc.person else {                    return                }                self.personDataSource.insert(p, at: 0)                self.tableView.reloadData()            }

正確寫法應該是

            vc.completionBlock = {[weak vc] in                guard let p = vc?.person else {                    return                }                self.personDataSource.insert(p, at: 0)                self.tableView.reloadData()            }原因:vc對completionBlock有引用,閉包代碼中又引用了vc,造成循環引用,所以使用前,要加[weak vc] in,用到vc的地方后面加?,即vc?


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久视频精品在线| 成人性教育视频在线观看| 中文字幕久热精品在线视频| 国产精品精品一区二区三区午夜版| 日韩欧美成人免费视频| 在线精品播放av| 2019中文字幕全在线观看| 日韩乱码在线视频| 欧美日韩亚洲成人| 中文字幕亚洲激情| 欧美日韩国产一中文字不卡| 国产在线拍偷自揄拍精品| 国产精品精品视频| 亚洲jizzjizz日本少妇| 久热精品视频在线| 日韩成人av网址| 亚洲自拍高清视频网站| 欧洲日韩成人av| 精品视频偷偷看在线观看| 国内精品一区二区三区四区| 欧美亚洲另类在线| 日韩精品免费在线播放| 欧美精品18videos性欧美| 国产精品99久久久久久久久久久久| 成人免费在线网址| 亚洲国产精品久久久久秋霞蜜臀| 欧美性猛交xxxx黑人猛交| 国产69精品久久久久9| 亚洲欧美日韩在线高清直播| 成人免费视频网址| 亚洲剧情一区二区| 国产日韩欧美夫妻视频在线观看| 亚洲自拍欧美色图| 黄色一区二区三区| 91精品国产综合久久香蕉| 日韩欧美国产免费播放| 久久影视电视剧凤归四时歌| 欧美在线视频一二三| 91精品国产免费久久久久久| 国产成人午夜视频网址| 欧美人交a欧美精品| 欧美激情综合色综合啪啪五月| 亚洲精品国产品国语在线| 91高清视频在线免费观看| 久久影视电视剧凤归四时歌| 色无极亚洲影院| 中文字幕亚洲一区二区三区五十路| 久久成人免费视频| 欧美色视频日本版| 美女视频黄免费的亚洲男人天堂| 日韩麻豆第一页| 亚洲欧美激情另类校园| 亚洲人成电影网站色| 欧美国产第二页| 精品小视频在线| 欧美一级成年大片在线观看| 国产精品午夜一区二区欲梦| 一个人看的www久久| 亚洲天天在线日亚洲洲精| 成人黄色免费在线观看| 精品中文字幕视频| 日韩禁在线播放| 在线视频免费一区二区| 狠狠躁18三区二区一区| 日韩av黄色在线观看| 在线观看亚洲视频| 久久精品99久久香蕉国产色戒| 欧美裸体男粗大视频在线观看| 欧美俄罗斯性视频| 欧美在线视频一区二区| 久久久爽爽爽美女图片| 欧美猛少妇色xxxxx| 久久99精品国产99久久6尤物| 亚洲自拍小视频| 亚洲毛片一区二区| 国产亚洲欧美日韩一区二区| 亚洲精品久久久久中文字幕二区| 国产精品青青在线观看爽香蕉| 欧美亚洲午夜视频在线观看| 欧美成人精品h版在线观看| 日韩中文字幕视频在线| 国产最新精品视频| 欧美成人午夜激情在线| 欧美日韩另类在线| 91精品国产91久久久久久久久| 高清欧美性猛交xxxx黑人猛交| 国产精品永久在线| 一本大道久久加勒比香蕉| 日日狠狠久久偷偷四色综合免费| 欧美理论电影网| 91视频免费网站| 7777免费精品视频| 精品久久香蕉国产线看观看gif| 91人人爽人人爽人人精88v| 欧美日韩国产va另类| 国产精品av在线| 欧美亚洲激情在线| 亚洲图片欧美午夜| 精品视频在线观看日韩| 91av在线影院| 在线日韩精品视频| 亚洲va久久久噜噜噜久久天堂| 在线电影av不卡网址| 亚洲免费视频观看| 欧美黑人狂野猛交老妇| 日韩大片免费观看视频播放| 久久91精品国产| 隔壁老王国产在线精品| 在线观看亚洲视频| 国内成人精品视频| 国产精品久久久久久久av电影| 色综合五月天导航| 欧美一级电影在线| 在线观看国产精品91| 亚洲精品国产拍免费91在线| 国产精品wwww| 九色成人免费视频| 777国产偷窥盗摄精品视频| 国产福利视频一区| 亚洲片av在线| 国产有码一区二区| 国产国语刺激对白av不卡| 欧美激情xxxx性bbbb| 欧美在线视频观看免费网站| 91精品视频在线免费观看| 日韩欧美国产一区二区| 日本sm极度另类视频| 深夜精品寂寞黄网站在线观看| 亚洲成人动漫在线播放| 成人中心免费视频| 国产亚洲精品久久久| 亚洲xxxxx性| 日韩免费电影在线观看| 亚洲三级av在线| 国产精品草莓在线免费观看| 中文字幕在线观看日韩| 国内精品视频一区| 亚洲一区二区国产| 欧美日韩国产精品一区二区不卡中文| 久久精品国产综合| 久久久久久噜噜噜久久久精品| 国产精品爽黄69| 久久久91精品国产一区不卡| 国产成人在线亚洲欧美| 麻豆精品精华液| 亚洲xxxxx性| 亚洲伦理中文字幕| 1769国内精品视频在线播放| 第一福利永久视频精品| 亚洲国产日韩欧美在线动漫| 久久成人精品视频| 久久精品中文字幕电影| 色哟哟网站入口亚洲精品| 中文字幕欧美日韩| 国内精久久久久久久久久人| 午夜精品一区二区三区av| 国产91精品高潮白浆喷水| 欧美激情精品久久久久久免费印度| 亚洲午夜激情免费视频| 91久久精品美女高潮| 超碰精品一区二区三区乱码| 中文字幕免费精品一区高清| 欧美日韩一区二区免费视频| 亚洲精品狠狠操|