我是iOS开发新手,直接从Swift开始.

当我想向一个项目中添加一个新文件时,IDE会给我提供两个文件,在我目前看到的教程中,这两个文件似乎可以互换使用.

当我创建一个新的Cocoa Touch类时,我得到的是(取决于继承的类)

import UIKit

class CtTest: NSObject {

}

当我创建一个新的Swift文件时,我得到:-

import Foundation

这两个类的扩展都是.敏捷的

如果我将类定义添加到Swift文件,并按如下方式修改它:-

import UIKit
import Foundation

class SwTest:NSObject
{
}

这两个文件之间还有什么区别吗.

如果是的话,在什么情况下,比如视图控制器、模型等,哪些类是首选的.

非常感谢.

推荐答案

除了默认情况下放入文件的代码之外,这两个不同的模板之间没有区别.正如您所注意到的,它们都有相同的扩展名,都是纯文本文件——编译器对它们的处理没有任何不同.

一般的经验法则是,只有在文件中需要模块时才导入该模块,否则基本上会出现编译错误.如果试图使用导入中的类型,则会由于缺少导入而导致编译器错误.

Foundation

基金会基本上是Apple开发标准库,在Objtovi.C中实现,它包括NSArray、NScand和NS字典等数据类型.但是,Swift提供了以下数据类型的替换:数组、字符串和字典.您只需要在try 与Objective-C API交互的文件中输入import Foundation个.但是,由于所有现有API都是用Objto-C编写的(因为Swift是如此新奇),所以除了基本的域对象之外,几乎所有的文件都必须导入基础.

UIKit

UIKIT实际上包括基础.如果导入UIKit,则不需要导入基础.UIKit是特定于iOS接口的标准API的集合.它包括UITableView等视图和UIViewController等控制器.无论何时在iOS应用程序的UI上工作,都需要导入此文件.

Cocoa Touch Class

此模板对于从UIKit中对类进行子类化非常有用,并且可能会让Xcode为您生成接口生成器文件.如果你不需要这两样东西,你应该使用Swift类模板.只有在必要的情况下(如果需要使用Objective-C中的Swift类),才可以从NSObject继承对象.如果不从NSObject继承,编译器可以进行额外的优化,从而避免Objective-C运行时中一些较慢的部分.

Swift相关问答推荐

如何防止自动状态恢复,如果应用程序被启动打开特定的文档?

传递给SWIFT ResultBuilder的闭包中结果类型的对象

通过SwiftUI中的列表 Select 从字典中检索值

显示第二个操作紧接在另一个操作后的工作表在SwiftUI中不起作用

它是RxSwift中直接用于可扩展视图的有效的可扩展BehaviorRelay值?

如果通过计时器循环运行,则检索CPU利用率百分比的SWIFT脚本运行良好.似乎在没有计时器的情况下停留在初始百分比上

String.Index encodedOffset已弃用,但建议的替代方案不起作用

从任务中打印

有没有办法让文本字段以不同的 colored颜色 显示而不影响半透明背景?

SwiftUI 交易:根据外部状态制作一个动画或静止的按钮

URL appendPathComponent(_:) 已弃用?

如何将视图添加到多行文本视图的末尾?

为什么 performSegue() 不调用 shouldPerformSegue()

组合 flatMap 不会返回预期的上下文结果类型

如何快速判断设备方向是横向还是横向?

快速的 AES 加密

使用 Swift 在 iOS 8 中为应用程序图标添加徽章

如何在 Swift 中将 NSURL 转换为字符串

Swift中字节数组的NSData

UIButton 标题左对齐问题 (iOS/Swift)