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

'ViewController'类没有快速初始化方法

罗学林
2023-03-14
问题内容

当我这样做时,从编译器得到投诉

class ViewController: UIViewController {

    var delegate : AppDelegate
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        //self.appDelegate = UIApplication.sharedApplication().delegate;

    }

    @IBAction func getData(sender : AnyObject) {

    }

    @IBAction func LogOut(sender : AnyObject) {
    }
}

但是,如果我只添加 在如下所示的 AppDelegate 末尾,错误消失了。

class ViewController: UIViewController {

    var delegate : AppDelegate?
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        //self.appDelegate = UIApplication.sharedApplication().delegate;

    }

    @IBAction func getData(sender : AnyObject) {

    }

    @IBAction func LogOut(sender : AnyObject) {
    }
}

optional 除非我错了,否则我看不到与此错误相关的关键字。


问题答案:

该错误可以得到改善,但是第一个版本的问题是您有一个成员变量,该成员变量delegate没有默认值。Swift中的所有变量必须始终具有一个值。这意味着您必须在没有的初始化程序中进行设置,也可以在线提供默认值。

当您将其设为可选时,nil默认情况下允许它为默认值,而无需显式为其提供值或对其进行初始化。



 类似资料:
  • 问题内容: 我对Swift类有疑问。我有一个UITableViewController类和UITableViewCell类的快捷文件。我的问题是UITableViewCell类和插座。此类存在错误 类别“ HomeCell”没有初始化程序 ,并且我不理解此问题。 感谢您的回复。 问题答案: 您必须使用隐式展开的可选变量,以便Swift可以在初始化阶段处理循环依赖关系(在这种情况下,UI组件的父级<

  • 如何向Swift中的子类添加自定义初始化器? 我创建了的一个子类,它看起来如下所示: 如果我加上这个,Xcode会抱怨处初始化。所以我想这也不是解决办法。所以我想知道如何在Swift中将自定义初始化器正确地添加到子类中(因为在Objective-C中这似乎不是问题)?

  • 问题内容: 有什么方法可以通过大量(> 1000)类来加快javax.xml.bind.JAXBContexts的初始化?在我们的XML繁重的应用程序中,启动时间约为10分钟,并且主要由JAXBContexts的初始化时间组成。:-( 我们正在JDK 1.5和org.jvnet.jaxb2.maven2.maven-jaxb2-plugin中使用Sun的JAXB实现,以从XSD生成代码。 澄清:问

  • 本文向大家介绍iOS 获取初始ViewController,包括了iOS 获取初始ViewController的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 问题内容: 这个问题不是关于为什么我们将列表初始化为实现的接口,例如 问题是以下两个之间有何区别?为什么它们(显然)以相同的方式工作? 问题答案: 这两段代码是等效的,并使用 类型 创建s (在您的示例中): 但是,第二个示例使用Java 7中引入的 菱形运算符 ()。它添加了类型推断,并减少了赋值的冗长性。 请参阅文档中的以下引用: 您可以用一组空的类型参数()来替换调用通用类的构造函数所需的类

  • 问题内容: 我正在寻找类似于Objective-C的class方法的行为,因为该方法在类初始化时被调用一次,此后不再被调用。 一个简单的闭合将非常时尚!而且很显然,当我们在结构闭包中使用“ s”而不是“ s”时,这一切都将非常匹配! 问题答案: 如果您有一个Objective-C类,最简单的方法就是重写。但是,请确保您的类的 子 类也被覆盖,否则您的类的 子 类可能会被多次调用!如果需要,可以使用