https://wiki.gnome.org/Projects/Vala/ReferenceHandlingVala 语言使用“自动引用计数”代替 “垃圾回收”,
为了解决“循环引用”于是引入了关键字:
“weak” :弱引用
“owned” :转移所有权,老变量变弱引用,新变量变唯一强引用
“unowned” :目前与“weak”效果一样
所以缺点是:虽然没有了悬空野指针,但如果程序员失误,没用 weak 处理潜在的循环引用,仍旧会内存膨胀。
特殊情况时:
1.对于外部 so 库的数据(即不是 Vala 语言内部提供的会“自动引用计数”类型)类型
2.通过[Compact]注解的类型也会失去“自动引用计数”特性的类型
对于这两种特殊情况的处理方式可以:
- 方法 1. Copy 成 Vala 语言内部提供的会“自动引用计数”类型后处理(提供 copy method 注解来自动处理)
- 方法 2. 使用 <类型>* 星号 与 delete 关键字,手动处理
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/936988
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.