首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$cinit和$init在AVM2中是什么?

$cinit和$init在AVM2中是什么?
EN

Stack Overflow用户
提问于 2010-02-10 21:31:47
回答 2查看 1.1K关注 0票数 1

更新:找到了一些关于AVM2的不错的信息。我没有花太多时间在它上,但它肯定涵盖了$init和$cinit (以及$iinit,以及许多其他事情)。在别人提出问题之前,如果我对这个问题有一个很好的理解,我就会给你一个答复。

今天被拖进了一长串的链接跳跃和谷歌搜索,但仍然不太了解什么是$cinit和$init。

我很在意,因为我今天学到了$cinit和$init是被解释的(如果我正确理解的话),而其他的都是编译的。

我认为$init引用给定类的构造函数,$cinit引用创建类的对象的构造函数。..。差不多吧..。

有人能让我直截了当,或者至少给我指明一个有帮助的方向?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2013-04-10 07:34:38

这是个老生常谈的问题,但由于我知道答案,我会在这里张贴。

$cinit是在需要使用类之前调用的方法。它初始化所有静态成员并运行静态初始化程序中的任何代码。把它看作是类自己的构造函数。例如,如果AS3中有以下类:

代码语言:javascript
复制
public class SomeClass extends Object {
   static private const SOME_STATIC_VAR = 4;
   ....
}

然后,$cinit方法将在类被使用甚至引用之前运行,它将初始化SOME_STATIC_VAR的内存并将其值设置为4。

$init是类实例初始化器。它基本上是类构造函数。例如:

代码语言:javascript
复制
public function SomeClass() {
  super();
  return;
}

希望这对你来说足够详细了!

票数 1
EN

Stack Overflow用户

发布于 2010-12-10 03:18:25

$cinit是在首次使用该类时构造所有静态变量的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2240502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档