查看Apple的官方过渡到ARC文档,它说"堆栈变量"现在初始化为零值。 然而,在我的快速、非正式测试中,静态变量和 ivar 似乎也被初始化为零;有些人表示相信他们绝对会自动归零。但是,静态变量和 ivar 不是堆栈变量。苹果是否发布了关于静态变量和 ivar 的不同法令?
此外,函数中的静态初始化和函数外部的静态初始化之间有区别吗?
由于语言的语义,static
变量被清零 — 作为 C 的严格超集,行为是有保证的。 IVAR 也保证在初始化时归零(参见项目符号 3(。