我是iOS开发的新手,直接使用Swift.
当我想向项目中添加一个新文件时,IDE会向我提供两个文件,这些文件在我到目前为止看到的教程中似乎可以互换使用.它们是"Cocoa Touch Class"和"Swift Class".
当我创建一个新的Cocoa Touch类时,这就是我得到的(取决于继承的类)
import UIKit class CtTest: NSObject { }
当我创建一个新的Swift文件时,我明白了: -
import Foundation
这两个类的扩展名是.swift
如果我将类定义添加到Swift文件并按如下方式修改它: -
import UIKit import Foundation class SwTest:NSObject { }
这两个文件之间是否有任何差异.
如果是这样,哪些类在哪些场景中是首选的,例如.查看控制器,型号等
谢谢
除了默认情况下放入文件的代码之外,两个不同的模板之间没有区别.就像你注意到的那样,它们都具有相同的扩展名,并且它们都是纯文本文件 - 编译器不会对它们进行任何不同的处理.
一般的经验法则是只在你需要的时候导入一个模块 - 基本上如果你得到编译错误.如果您尝试使用它们中的类型,则会因为缺少导入而出现编译器错误.
Foundation基本上是Apple开发标准库,在Objective-C中实现.它包括NSArray,NSString和NSDictionary等数据类型.但是,Swift提供了这些数据类型的替换:Array,String和Dictionary.您应该只需要import Foundation
尝试与Objective-C API交互的文件.但是,由于所有现有的API都是用Objective-C编写的(因为Swift是如此新的),所以除了基本域对象之外,几乎所有文件都必须导入Foundation.
UIKit实际上包括基金会.如果导入UIKit,则无需导入Foundation.UIKit是特定于iOS界面的标准API的集合.它包括UITableView和UIViewController等控制器之类的视图.每当处理iOS应用程序的UI时,您都需要重要.
此模板对于从UIKit继承类并可能让Xcode为您生成接口构建器文件非常有用.如果您不需要这些东西,您应该只使用Swift类模板.如果你真的需要,只有你的对象继承自NSObject(如果你需要能够使用Objective-C中的Swift类).如果你不从NSObject继承,那么编译器可以进行额外的优化,它避免了Objective-C运行时的一些较慢的部分.