swi 指令能用在C语言吗,目标c-Swi中的强引用和弱引用

细节

xCode 9.1,Swift 4

有关ARC使用的更多信息

Daggle是Anzor

Swift中的ARC和内存管理

“弱,强,不知道,我的天哪!” -SWIFT参考资料指南

ARC Swift教程

完整样本

import UIKit

var str = "Hello, playground"

class BasicClass: CustomStringConvertible {

let text: String

init(text: String) { self.text = text }

deinit { print ("Object of the \"\(className)\" class deinited") }

var className: String {

return "\(type(of: self))"

}

var referenceCount: Int {

return CFGetRetainCount(self)

}

var description: String {

return "className: \(className), reference count: \(referenceCount)"

}

}

class Class1: BasicClass {

var objectWithStrongReference: Class2?

override var description: String {

return super.description + ", embed strong obj reference count: \(objectWithStrongReference?.referenceCount ?? 0)"

}

}

class Class2: BasicClass {

weak var objectWithWeakReference: Class1?

override var description: String {

return super.description + ", embed weak obj reference count: \(objectWithWeakReference?.referenceCount ?? 0)"

}

}

var obj1: Class1? = Class1(text: "String 1")

print(obj1 ?? "nil")

var obj2: Class2? = Class2(text: "String 2")

print(obj2 ?? "nil")

print("=====================================")

print("obj1.value = obj2, obj2.value = obj1")

obj1?.objectWithStrongReference = obj2

obj2?.objectWithWeakReference = obj1

print(obj1 ?? "nil")

print(obj2 ?? "nil")

print("=====================================")

print("obj2 = nil")

obj2 = nil

print(obj1 ?? "nil")

print(obj2 ?? "nil")

print("=====================================")

print("obj1 = nil")

obj1 = nil

print(obj1 ?? "nil")

print(obj2 ?? "nil")

结果

8d6172b6d0151fcb9b7990c81dad0532.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值