https://wiki.gnome.org/Projects/Vala/ReferenceHandling
Vala 语言使用“自动引用计数”代替 “垃圾回收”,
为了解决“循环引用”于是引入了关键字:
“weak” :弱引用
“owned” :转移所有权,老变量变弱引用,新变量变唯一强引用
“unowned” :目前与“weak”效果一样
所以缺点是:虽然没有了悬空野指针,但如果程序员失误,没用 weak 处理潜在的循环引用,仍旧会内存膨胀。
特殊情况时:
1.对于外部 so 库的数据(即不是 Vala 语言内部提供的会“自动引用计数”类型)类型
2.通过[Compact]注解的类型也会失去“自动引用计数”特性的类型
对于这两种特殊情况的处理方式可以:
- 方法 1. Copy 成 Vala 语言内部提供的会“自动引用计数”类型后处理(提供 copy method 注解来自动处理)
- 方法 2. 使用 <类型>* 星号 与 delete 关键字,手动处理
Vala 语言使用“自动引用计数”代替 “垃圾回收”,
为了解决“循环引用”于是引入了关键字:
“weak” :弱引用
“owned” :转移所有权,老变量变弱引用,新变量变唯一强引用
“unowned” :目前与“weak”效果一样
所以缺点是:虽然没有了悬空野指针,但如果程序员失误,没用 weak 处理潜在的循环引用,仍旧会内存膨胀。
特殊情况时:
1.对于外部 so 库的数据(即不是 Vala 语言内部提供的会“自动引用计数”类型)类型
2.通过[Compact]注解的类型也会失去“自动引用计数”特性的类型
对于这两种特殊情况的处理方式可以:
- 方法 1. Copy 成 Vala 语言内部提供的会“自动引用计数”类型后处理(提供 copy method 注解来自动处理)
- 方法 2. 使用 <类型>* 星号 与 delete 关键字,手动处理