当前位置: 首页 > 面试题库 >

初始化需要“自我”作为参数的Swift属性

纪畅
2023-03-14
问题内容

我有一个Swift类,我想看起来像这样:

class UpdateManager {
  let timer: NSTimer

  init() {
    timer = NSTimer(timeInterval: 600, target: self, selector: "check", userInfo: nil, repeats: true)
  }

  func check() {
    // Do some stuff
  }
}

但是,Swift不喜欢我要传递selfNSTimer初始化程序的事实。我在这里打破某些模式吗?应该如何完成这样的初始化?


问题答案:

您已经找到了Implicitly Unwrapped
Optional
的主要用例。

  • 你需要访问selfinit,之前timer被初始化。
  • 否则,timer应该 永远 是零,所以你不应该有外部的检查init

因此,您应该声明let timer: NSTimer!



 类似资料:
  • 问题内容: 我想像这样使用Self in init参数: 我知道我可以在这里使用“ A”,但是我想实现这一点,如果某个类从A继承,那么它的初始化器将知道操作是它的类类型,而不仅仅是A。所以例如,如果我这样写: 然后,我可以使用: 这可能吗? 问题答案: 不必使用或在每个初始化器中使用,您可以简单地重写每个子类的初始化器以使用其自己的类型为。 之所以起作用,是因为的初始值设定项声明的类型应符合,并且

  • 本文向大家介绍Swift使用参数自定义初始化,包括了Swift使用参数自定义初始化的使用技巧和注意事项,需要的朋友参考一下 示例 请注意,您不能省略参数标签: 为了允许省略参数标签,请使用下划线_作为标签: 如果参数标签使用一个或多个属性共享名称,请使用self显式设置属性值:            

  • 问题内容: 我快速覆盖了其中的两个必需变量,这些变量通过使用引用进行初始化,因为这些变量用于实现协议,并且需要引用以使用其属性 现在的问题是,它给了我预期的错误 Swift的编译器执行四项有用的安全检查,以确保两阶段初始化完成且没有错误 安全检查1指定的初始化程序在将其委托给超类初始化程序之前,必须确保初始化其类引入的所有属性。 摘录自:苹果公司“ The Swift Programming La

  • 问题内容: 您将如何在Swift中实现以下模式? 所述类被初始化,其中包含的词典JSON数组。这些字典用于初始化类。但是,当访问或属性时,对象的初始化会延迟进行。 问题答案: 看来这个问题已经得到了很大的回答,但是回过头来看原始帖子,这是(IMHO)Swift中相对简洁的翻译。关键是您可以链接惰性属性。请注意,我同时使用了类函数和闭包- 两者都很好。

  • print语句会导致以下编译时错误, 局部变量f可能尚未初始化 如果Java中的原语已经有一个默认值(float=0.0f),为什么我需要定义一个呢? 所以,这是有效的 谢谢大家!

  • 上一节中我们给大家介绍了Fullpage的基本用法,可能很多用户有个性化的需求,没关系Fullpage提供了多个参数,我们可以配置这些参数,满足我们项目的需求。 controlArrows 默认值:true,决定是否使用控制箭头向左或向右移动幻灯片。 verticalCentered 默认值:true,决定是否初始化后,是否垂直居中网页的内容,如果你想自定义元素的位置,那么你可以设置为false,