问题标签 [convenience-methods]

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 投票
10 回答
68767 浏览

swift - 方便的 init 与 init 在快速、明确的示例中的区别是什么?

我很难理解两者之间的区别,或者convenience init.

0 投票
1 回答
292 浏览

ios - UNNotificationCategory 子类初始化问题

我想子类UNNotificationCategory化(UserNotifications),因为我想使用枚举而不是硬编码字符串作为类别标识符。UNNotificationCategory定义中有一个方便的 init

我无法为我的子类编写初始化程序。我知道我不能在子类中指定初始化程序,因为我想调用超类的便利 init。但是我的便利初始化也引发了编译器错误。

这是代码:

这会导致错误:在从初始化程序返回之前,未在所有路径上调用 self.init

我猜这是因为这个类是在 Objective-C 中实现的,并且可能他们没有从便利初始化器中调用指定的初始化器(因为 Objective-C 类不必从便利初始化器中调用指定的初始化器)。

但这是否意味着UNNotificationCategory如果我想在其中编写初始化程序,我就不能子类化?

0 投票
3 回答
575 浏览

swift - Swift 3:扩展 Foundation 的“计时器”的便利初始化程序挂起

我正在尝试Timer在 Swift 3 中扩展 Foundation 的类,添加一个便利的初始化程序。但它对 Foundation 提供的初始化程序的调用永远不会返回。

下面的简单演示说明了该问题,该演示可以作为 Playground 运行。

控制台输出:

为了进一步学习,

• 我编写了类似的扩展代码URLProtocol(仅有的具有实例初始化程序的其他 Foundation 类之一)。结果:没问题。

• 为了消除可能导致Objective-C 的东西,我将包装的初始化程序更改为init(timeInterval:repeats:block:)方法并提供了一个Swift 闭包。结果:同样的问题。

0 投票
2 回答
1559 浏览

ios - 为什么我不能在我的 UIButton 子类的便利初始化程序中使用“self.init(type:.custom)”

我知道必须调用超类的指定初始化器,我认为init(type: UIButtonType)已经调用了指定初始化器,所以我在子类便利初始化器中使用它,但失败了

然后,我尝试了这个。它编译好了。但是,看起来不专业

所以,我怀疑我可能想错了。所以,我做了一些测试。它成功调用super convenience initializer。为什么我不能self.init(type: .custom)在我的子类中使用便利初始化程序UIButton

}

0 投票
1 回答
118 浏览

swift - swift中是否真的需要方便关键字?

swift 中的便捷关键字完全让我感到困惑。它似乎一点用都没有。在同一个或超类中调用其他初始化程序(或说构造函数)是面向对象语言(如 Java、C# 等)中非常常见的功能。如果任何成员未初始化,编译器会发出警告。似乎它唯一做的就是将对其他初始化程序的调用限制在同一个类中,这使它看起来更加无用。那么,为什么还要费心使用这个关键字呢?

我在网上看到了一些其他线程讨论这个问题,但没有一个是真正令人信服的。

有谁知道这个关键字的真正目的?

0 投票
2 回答
78 浏览

swift - 调用中的额外参数,便利初始化器

我在这里做错了什么?一切似乎都很好。函数签名是正确的。我看不出为什么parent会有额外的论点。


编辑:从屏幕截图切换到实际代码。

0 投票
1 回答
74 浏览

swift - 如何使同一类的对象成为初始化程序的返回值?

我有这个功能:

我怎样才能把它改成这样?

我希望结果UIGraphicsGetImageFromCurrentImageContext()成为发起的“自我”。但结果已经是UIImage. 我不认为我应该在这个函数中使用“变异”?

0 投票
1 回答
444 浏览

swift - 当我尝试调用 self.init 时,我的便利初始化程序有什么问题?

我写了下面的代码。当我尝试调用 self.init 时,我得到的错误出现在我的便利初始化程序的末尾。我的逻辑或语法有什么问题?或者我将如何调试这个?Xcode 给出的错误是“不能使用类型的参数列表调用”。

感谢您对此的任何帮助

0 投票
1 回答
188 浏览

java - 为了方便开发人员,我应该在接口中声明方法吗?

我们最近讨论了定义方法以方便开发人员在接口中使用。给定以下最小示例:

实现途径 1:我们中的一个人建议前瞻性地定义这两种方法,以便开发人员在他们想要使用接口的实现时免于编写样板代码。这将前瞻性地完成,不知道最终经常使用这两种方法中的哪一种。带有 String-type-parameter 的方法是为了方便开发人员而明确设计的。

实现途径 2:另一个人说应该只创建 setUri(Uri uri),因为你要求接口的实现者实现这两种方法,这会导致接口用户(测试等)付出更大的努力,这会导致更好的类型安全。

我看到以下几个方面:

  • 对应于 YAGNI 原则,应该只创建两种方法中的一种 - 一种更适合预期特征的方法
  • 如果通常只有一个字符串可用,那么仅实现setUri(Uri)- 方法可能会导致更多样板代码。特别是如果Uri-Type 的构造更复杂。最后,这违反了 DRY 原则,因为Uri-Type 的构造在方法的不同用法中重复。

哪种代码约定可以应用于此问题设置?对这两种实施途径中的每一种都有什么影响?

0 投票
1 回答
428 浏览

swift - 便利初始化程序不断崩溃,但指定的初始化程序工作正常?

使用便利初始化程序创建实例时,操场一直给我这个错误“错误:执行被中断,原因:EXC_BAD_ACCESS(代码= 2,地址= 0x7ffee5ae9ff8)”但是当使用指定的初始化程序时它工作正常。

我不完全确定我是否正确设置了便利初始化程序,以便在创建新实例时只需要 arsenal 参数。