【问题标题】:What is the difference between the cocoa touch class and normal swift class?可可触摸类和普通 swift 类有什么区别?
【发布时间】:2015-04-18 19:46:37
【问题描述】:

我学习 Swift 语言已经有一段时间了,我一直被一个基本问题所困扰,即 Cocoa Touch 类的文件模板和普通 Swift 类的文件模板之间的基本区别是什么?有人可以提供任何基本的区别以及示例吗?我知道它们是不同的,因为它们都有创建文件的选项。

【问题讨论】:

  • 这个问题太宽泛,无法在 Stack Overflow 上得到一个好的答案。你能把你的问题缩小到你正在解决的具体问题吗?您可能需要查看Swift In Flux 以获得包含一些差异的长列表。
  • 您的问题类似于“2 个橙子之间有什么区别?”的问题。如果不指定类/橙子,没有人可以告诉您其中的区别。最好的答案是在文档中查找它们,看看 Apple 写了什么。
  • @d00dle 没错。我知道它们是不同的,因为它们是创建文件的不同选项,但它们是相同的。只是想知道它们在功能和实现层面上的区别

标签: ios cocoa swift


【解决方案1】:

TL;DR: 它们不是不同类型的类。它们只是不同的文件模板。


根据您的 cmets:

我知道它们是不同的,因为它们是创建文件的不同选项,但它们是相同的。

它们不是不同的选择。

我们可以创建一个“Cocoa Touch Class”或一个“Swift File”(或 7 个不同的选项)。 “Swift Class”不是一个选项。

那么...考虑到这一点,这两个选项之间的区别是什么

如果我们选择 Swift File,下一个对话框屏幕会要求我们为文件命名并选择保存位置。当我们从这里单击“创建”时,我们只是得到一个空的(ish)Swift 文件,其名称是我们选择的。

文件中的所有内容都是样板版权信息和import Foundation 行:

//
//  File.swift
//  Swift_iOS
//
//  Created by Nick Griffith on 4/18/15.
//  Copyright (c) 2015 nhg. All rights reserved.
//

import Foundation

这就是创建的整个文件。


但是,如果我们选择 Cocoa Touch Class,我们会得到一个完全不同的对话框。

我们被要求给我们的类一个名字,选择它的基类是什么,然后选择一种语言。此外,如果我们的基类是某种视图控制器,我们将可以选择创建一个配套的 XIB 文件(如果我们正在开发 iOS 应用程序,还可以选择它用于什么设备)。

当我们点击下一步时,我们没有可以选择我们的新文件将使用什么文件名,但我们仍然可以选择我们的保存位置。然而,一旦我们真正创建了文件,我们就有了一组完全不同的样板代码。我们得到的确切样板代码完全取决于我们的基类是什么,但无论如何,我们类的骨架始终存在:

//
//  MyViewController.swift
//  Swift_iOS
//
//  Created by Nick Griffith on 4/18/15.
//  Copyright (c) 2015 nhg. All rights reserved.
//

import UIKit

class MyViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        // Get the new view controller using segue.destinationViewController.
        // Pass the selected object to the new view controller.
    }
    */

}

【讨论】:

    猜你喜欢
    • 2011-02-25
    • 2022-08-19
    • 1970-01-01
    • 2023-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    • 1970-01-01
    相关资源
    最近更新 更多