问题标签 [initialization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
15022 浏览

objective-c - 使用超类初始化器初始化一个类

我有两个类,一个是另一个的子类(比如Animaland Dog)。超类有一些初始化器(比如initAnimal),子类有一些初始化器(比如initDog)。问题是(从编译器的角度来看)做类似的事情是完全合法的Dog *adog = [[Dog alloc] initAnimal],即。使用它的超类初始化器初始化一个类。我不喜欢这样,因为子类可以有一些我想确保初始化的额外实例变量。查看头文件可以解决这个问题,但是有没有一种简单的方法可以让编译器为我检查?我有一种感觉,我错过了一些非常明显的东西,但我就是不能指望它:-)

更新: andinitDog不是initAnimal最好的例子。我的意思是两个真正不同的初始化程序(例如initforAnimalinitWithFurfor Dog)。如果我希望每只狗都分配一些毛发,我会将毛发作为初始化程序的一部分,这样没有人可以在没有毛发的情况下获得狗对象。但是仍然很容易错误地用超类初始化实例init,然后我就被淹没了。

感谢 Jason 提出指定的初始化程序。我以前没有想到,但我可以重载超类的指定初始化程序并在那里设置一些合理的默认值。但是,如果我能以某种方式使使用其他初始化程序而不是类本身的初始化程序成为非法,我仍然更愿意——还有更多的想法吗?

0 投票
3 回答
59990 浏览

c++ - 如何在 C++ 标头中声明数组?

这与其他一些问题有关,例如:this和我的其他一些问题。

这个问题和其他问题中,我们看到我们可以在一个不错的步骤中声明和初始化字符串数组,例如:

这可以在没有麻烦的函数实现中完成,也可以在任何范围之外的 .cpp 文件的主体中完成。

我想要做的是将这样的数组作为我正在使用的类的成员,如下所示:

但是,编译器抱怨,我似乎无法弄清楚为什么。是否可以在类定义的一个步骤中声明和初始化这样的数组?有没有更好的替代品?

0 投票
4 回答
1584 浏览

iphone - 便利方法与初始化方法的内存使用情况

最近在研究 iPhone 内存管理时,我尝试比较同一个对象上的便捷方法和 init 方法。例如,我有 UIImageView,它显示下载的 NSData:

便捷方法:

初始化方法:

当我尝试在视图上来回切换以增加内存使用量并点击“模拟内存警告”时,应用程序的内存使用量使用便捷方法从 20MB 变为 18MB,而 init 方法立即从 20MB 变为 13MB。

我还等待并与应用程序交互,以便在便捷方法的自动释放上释放时间。但并没有下降太多。

除了自动发布与发布之外,还有什么造成了差异?

0 投票
1 回答
5155 浏览

initialization - C、C++、C#、Java 和 Python 中的声明、定义、初始化

这些术语在上述每种语言中的含义是什么?为什么这些语言在这方面有所不同(无论它们在哪里,如果有的话)?

0 投票
2 回答
1804 浏览

java - 初始化 Java Web 应用程序

我有一个简单的 web 应用程序,带有一些 jsp 页面、servlet 和 pojo。我想在发出任何请求之前初始化连接池。做这个的最好方式是什么?可以在首次部署应用程序时完成,还是必须等到第一个请求进来?

0 投票
9 回答
213328 浏览

python - 在 Python 中创建具有初始容量的列表

这样的代码经常发生:

如果您要将数千个元素附加到列表中,这真的很慢,因为必须不断调整列表的大小以适应新元素。

在 Java 中,您可以创建一个具有初始容量的 ArrayList。如果您知道您的列表有多大,这将更有效率。

我知道这样的代码通常可以重构为列表理解。但是,如果for / while循环非常复杂,这是不可行的。我们的 Python 程序员有没有等价物?

0 投票
1 回答
2675 浏览

objective-c - 为什么我需要将 self 转换为 id?

我有一个带有 (id) 参数的 init 方法:

我试图这样称呼它:

但是 XCode 抱怨该参数是“不同的 Objective-C 类型”(这通常表示类型不匹配或间接错误级别)。

如果我明确地将 self 转换为 (id),警告就会消失。在任何一种情况下,代码都会按预期运行。有趣的是,在下一行中,我将 self 传递给另一个也采用 id 的方法,并且效果很好。

我想知道我是否遗漏了一些微妙的东西——或者它是编译器的一个特性?

在我确定它是必要的原因之前,我并不完全舒服地施放它。

[编辑]

我被要求提供更多代码。不确定还有很多其他相关的。这是我进行调用的实际代码。请注意,它本身位于 init 方法中。这是initWithSource发出警告的电话:

这是被调用的 init 方法:

0 投票
4 回答
14498 浏览

vb.net - 是否可以使用字符串键/值对初始化 New System.Collections.Generic.Dictionary?

System.Collections.Generic.Dictionary是否可以在一个语句中使用字符串键/值对创建和初始化对象?

我正在考虑字符串数组的构造函数..

例如

如果这被证明是一种语法糖,我更喜欢我可以在 .Net 2.0 (Visual Studio 2005) 和 Visual Basic 中使用的答案——尽管我很好奇它是否可能如此不要让它让你失望;o)

0 投票
16 回答
997078 浏览

c - 如何根据 C 编程语言标准初始化结构

我想初始化一个结构元素,在声明和初始化中分开。这就是我所拥有的:

这是MY_TYPE按照 C 编程语言标准(C89、C90、C99、C11 等)声明和初始化局部变量的方式吗?或者有什么更好的或者至少可以工作的吗?

更新我最终得到了一个静态初始化元素,我根据需要设置了每个子元素。

0 投票
12 回答
58558 浏览

c++ - 查找 C++ 静态初始化顺序问题

我们在静态初始化命令 fiasco中遇到了一些问题,我正在寻找方法来梳理大量代码以查找可能出现的情况。关于如何有效地做到这一点的任何建议?

编辑:关于如何解决静态初始化顺序问题,我得到了一些很好的答案,但这不是我的问题。我想知道如何查找受此问题影响的对象。在这方面,埃文的回答似乎是迄今为止最好的;我不认为我们可以使用 valgrind,但我们可能有可以执行类似功能的内存分析工具。这只会在给定构建的初始化顺序错误的情况下发现问题,并且顺序可以随着每次构建而改变。也许有一个静态分析工具可以捕捉到这一点。我们的平台是在 AIX 上运行的 IBM XLC/C++ 编译器。