文中代码运行环境:
swift版本: 2.1.1
Xcode版本: 7.2.1 (7C1002)
系统版本: OS X 10.11.3 (15D21)
ARC: Automatic Reference Counting
MRC: Mannul Reference Counting
swift语言在设计时, 使用LLVM编译器提供了ARC循环计数引用, 减轻了程序员在早期OC时代MRC需要手动控制引用计数的负担.
最简单的描述循环引用的模型是创建两个简单的类, 其中持有一个指向B类对象的成员, 同时B类持有一个指向A类对象的成员. demo如下:
//
// ViewController.swift
// ReferenceLoop
//
// Created by linx on 16/3/8.
// Copyright © 2016年 linx. All rights reserved.
//
import UIKit
class ObjA {
var link: ObjB?
init() {
print("ObjA.init()")
}
deinit {
print("ObjA.deinit")
}
}
class ObjB {
var link: ObjA?
init() {
print("ObjB.init()")
}
deinit {
print("ObjB.deinit")
}
}
class ViewController: