- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在结构中,初始化失败在属性设置为初始值之前触发。
但是,在类中,在设置所有属性并进行委托(delegate)后会触发失败。这是为什么?
为什么结构和类不能在初始化过程的最后触发初始化失败?
更新:
以下是 Apple Swift 文档中的示例代码:
在下面的结构例子中,初始化失败是在任何属性初始化之前触发的:
struct Animal {
let species: String
init?(species: String) {
if species.isEmpty { return nil }
self.species = species
}
}
在下面的class例子中,设置属性后触发初始化失败:
class Product {
let name: String!
init?(name: String) {
self.name = name
if name.isEmpty { return nil }
}
}
文档继续说明:
For classes, however, a failable initializer can trigger an initialization failure only after all stored properties introduced by that class have been set to an initial value and any initializer delegation has taken place.
为什么在类中,只有在所有属性都设置为它们的初始值(并发生委托(delegate))之后才会发生初始化失败?
最佳答案
如@mustafa 在 this 中所述帖子:
According to Chris Lattner this is a bug. Here is what he says:
This is an implementation limitation in the swift 1.1 compiler, documented in the release notes. The compiler is currently unable to destroy partially initialized classes in all cases, so it disallows formation of a situation where it would have to. We consider this a bug to be fixed in future releases, not a feature.
关于ios - 澄清 Swift 中类的可失败初始化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31667740/
在此链接中:http://www.sencha.com/blog/spotlight-ext-js-customers/ 请滚动到部分:为什么我们选择 Ext JS 有这一行: By using Ex
只是想确保我正确理解这一点(我会在 SO Chat 上问,但它已经死在那里了!): 我们有一个顶点数组,我们通过绑定(bind)它使其成为“当前” 然后我们有一个缓冲区,我们将其绑定(bind)到目标
我正在学习与 Java Swing 一起使用的类(class),但我遇到了障碍。在这个项目中,我们正在为不同的组件设置大小,但是,导师特意敲了一行我不太理解的代码,我只是在寻找这行代码概念的解释。 基
所以我尝试创建一个 HttpsRequest,效果非常好。问题是,我做错了什么,我认为这可能是因为我使用 HttpResponse,但我没有找到任何与 Https 类似的东西。有没有一种方法可以像 h
我正在阅读 Martin Fowler 的“UML distilled”,在阅读关联类的过程中,我得到了这句话: What benefit do you gain with the associati
我只是询问此说明: String[][] s = new String[2][2]; 如果我创建这个变量“s”,我会创建一个包含 2 行和 2 列的字符串表吗?或者 2 个表有 2 个元素?感谢您的澄
我目前正在做的事情需要为世界各地的用户提供本地化时间。所有日期时间都存储为 UTC,因此转换它们非常容易,并且我们有一个已知的、安全的引用点等等。 但是,关于如何表达偏移量的一些事情让我摸不着头脑。
我开始学习 spring,我遇到了一个定义,它说“Spring 使开发人员能够在没有应用程序服务器的情况下进行企业开发”。 这到底是什么意思,使用应用服务器进行企业开发有什么危害。 但是开发者在进行企
我是 AngularJS 的新手,对如何设置 angularJS 进行开发感到困惑。 Link1 link1 说我们需要 node.js 和一系列其他工具,这些工具必须在使用 AngularJS 之前
我是 iPhone 和 iPad 应用程序的开发者。 我的一个应用程序是在线个人财务管理工具的配套应用程序,该工具通过网站提供其服务和功能。这些功能的一部分将通过我正在创建的原生 iOS 应用程序提供
我正在研究飞行模拟器。我读过一篇关于四元数的教程(这个:http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-17-quater
抱歉,如果这是一个微不足道的问题: 实现 1: class Foo { protected: int bar; public: Foo(int bar) {
作为 C 中实现定义行为的示例。C 标准规定数据类型的大小是实现定义的。因此,假设 sizeof(int) 是实现定义的。 此实现定义的行为是否意味着 size(int) 依赖于平台或由编译器供应商定
从理论上讲,inline 函数在 C 语言中具有内部/静态链接,也就是说,它们仅在单个翻译单元内可见。因此,在两个单独的文件中定义的内联函数应该无法相互看到,并且两者都有自己的地址空间。 我正在尝试使
对于神童来说,这可能是一个非常基本的问题。但我对处理它有疑问。 在转换期间我们使用: int.Parse(someThing) Convert.ToInt32 或 Convert.ToString()
这个问题在这里已经有了答案: Regarding Android Permissions and Signature Protection level (2 个答案) 关闭 8 年前。 由于我是An
我有这个功能: 函数 Foo(){} 根据这张图片: >> Foo.prototype -> Foo {} 所以如果我写: Foo.prototype.constructor 现在 - 它引
我读了this article关于 Task.ConfigureAwait,它有助于防止异步代码中的死锁。 看看这段代码:(我知道我不应该做 .Result ,但这是问题的一部分) private v
我正在学习 C#。我可以将闭包理解为一种可以适应其定义环境中的变化的结构吗。 示例: List gurus = new List() {
这个问题在这里已经有了答案: Difference between volatile and synchronized in Java (4 个回答) 关闭6年前。 我对我读到的关于 volatile
我是一名优秀的程序员,十分优秀!