问题标签 [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.
swift - 方便的 init 与 init 在快速、明确的示例中的区别是什么?
我很难理解两者之间的区别,或者convenience init
.
ios - UNNotificationCategory 子类初始化问题
我想子类UNNotificationCategory
化(UserNotifications),因为我想使用枚举而不是硬编码字符串作为类别标识符。UNNotificationCategory
定义中有一个方便的 init
我无法为我的子类编写初始化程序。我知道我不能在子类中指定初始化程序,因为我想调用超类的便利 init。但是我的便利初始化也引发了编译器错误。
这是代码:
这会导致错误:在从初始化程序返回之前,未在所有路径上调用 self.init
我猜这是因为这个类是在 Objective-C 中实现的,并且可能他们没有从便利初始化器中调用指定的初始化器(因为 Objective-C 类不必从便利初始化器中调用指定的初始化器)。
但这是否意味着UNNotificationCategory
如果我想在其中编写初始化程序,我就不能子类化?
swift - Swift 3:扩展 Foundation 的“计时器”的便利初始化程序挂起
我正在尝试Timer
在 Swift 3 中扩展 Foundation 的类,添加一个便利的初始化程序。但它对 Foundation 提供的初始化程序的调用永远不会返回。
下面的简单演示说明了该问题,该演示可以作为 Playground 运行。
控制台输出:
为了进一步学习,
• 我编写了类似的扩展代码URLProtocol
(仅有的具有实例初始化程序的其他 Foundation 类之一)。结果:没问题。
• 为了消除可能导致Objective-C 的东西,我将包装的初始化程序更改为init(timeInterval:repeats:block:)
方法并提供了一个Swift 闭包。结果:同样的问题。
ios - 为什么我不能在我的 UIButton 子类的便利初始化程序中使用“self.init(type:.custom)”
我知道必须调用超类的指定初始化器,我认为init(type: UIButtonType)
已经调用了指定初始化器,所以我在子类便利初始化器中使用它,但失败了
然后,我尝试了这个。它编译好了。但是,看起来不专业
所以,我怀疑我可能想错了。所以,我做了一些测试。它成功调用super convenience initializer
。为什么我不能self.init(type: .custom)
在我的子类中使用便利初始化程序UIButton
?
}
swift - swift中是否真的需要方便关键字?
swift 中的便捷关键字完全让我感到困惑。它似乎一点用都没有。在同一个或超类中调用其他初始化程序(或说构造函数)是面向对象语言(如 Java、C# 等)中非常常见的功能。如果任何成员未初始化,编译器会发出警告。似乎它唯一做的就是将对其他初始化程序的调用限制在同一个类中,这使它看起来更加无用。那么,为什么还要费心使用这个关键字呢?
我在网上看到了一些其他线程讨论这个问题,但没有一个是真正令人信服的。
有谁知道这个关键字的真正目的?
swift - 调用中的额外参数,便利初始化器
我在这里做错了什么?一切似乎都很好。函数签名是正确的。我看不出为什么parent
会有额外的论点。
编辑:从屏幕截图切换到实际代码。
swift - 如何使同一类的对象成为初始化程序的返回值?
我有这个功能:
我怎样才能把它改成这样?
我希望结果UIGraphicsGetImageFromCurrentImageContext()
成为发起的“自我”。但结果已经是UIImage
. 我不认为我应该在这个函数中使用“变异”?
swift - 当我尝试调用 self.init 时,我的便利初始化程序有什么问题?
我写了下面的代码。当我尝试调用 self.init 时,我得到的错误出现在我的便利初始化程序的末尾。我的逻辑或语法有什么问题?或者我将如何调试这个?Xcode 给出的错误是“不能使用类型的参数列表调用”。
感谢您对此的任何帮助
java - 为了方便开发人员,我应该在接口中声明方法吗?
我们最近讨论了定义方法以方便开发人员在接口中使用。给定以下最小示例:
实现途径 1:我们中的一个人建议前瞻性地定义这两种方法,以便开发人员在他们想要使用接口的实现时免于编写样板代码。这将前瞻性地完成,不知道最终经常使用这两种方法中的哪一种。带有 String-type-parameter 的方法是为了方便开发人员而明确设计的。
实现途径 2:另一个人说应该只创建 setUri(Uri uri),因为你要求接口的实现者实现这两种方法,这会导致接口用户(测试等)付出更大的努力,这会导致更好的类型安全。
我看到以下几个方面:
- 对应于 YAGNI 原则,应该只创建两种方法中的一种 - 一种更适合预期特征的方法
- 如果通常只有一个字符串可用,那么仅实现
setUri(Uri)
- 方法可能会导致更多样板代码。特别是如果Uri
-Type 的构造更复杂。最后,这违反了 DRY 原则,因为Uri
-Type 的构造在方法的不同用法中重复。
哪种代码约定可以应用于此问题设置?对这两种实施途径中的每一种都有什么影响?
swift - 便利初始化程序不断崩溃,但指定的初始化程序工作正常?
使用便利初始化程序创建实例时,操场一直给我这个错误“错误:执行被中断,原因:EXC_BAD_ACCESS(代码= 2,地址= 0x7ffee5ae9ff8)”但是当使用指定的初始化程序时它工作正常。
我不完全确定我是否正确设置了便利初始化程序,以便在创建新实例时只需要 arsenal 参数。