我正在使用SnapKit.swift和其他框架。我想知道为什么有时我需要添加import SnapKit.swift
,为什么有时我不必在使用SnapKit的文件中添加。
有人能给我介绍一下Swift导入系统是如何工作的吗?
编辑:以下代码在不导入SnapKit 的情况下运行良好
import UIKit
class ImageEditViewController: UIViewController {
private var imageView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
imageView = UIImageView(image: UIImage.init(named: "img.jpg"))
self.view.addSubview(imageView)
imageView.snp_makeConstraints { (make) -> Void in
make.center.equalTo(self.view)
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
事实上,无论何时在Swift文件中直接使用import SnapKit
,都必须使用它。除非你进口,否则你不能使用它。
另一方面,如果其他框架已经导入SnapKit
,则不需要再次导入。
即:在swift标准库中。
如果要使用Foundation,则应使用import Foundation
。如果是import UIKit
,则不需要import Foundation
,因为UIKit已经有了import Foundation
这是因为Swift中的import
语句与Python和Java等其他语言的工作方式非常不同。让我澄清一下这里的一些术语,import
被称为"模块",而不是框架。
在Swift中,一些模块导入其他模块。例如UIKit模块导入Foundation。因此,当您导入UIKit时,就不需要再导入Foundation了。因为UIKit已经导入了它。
因此,在您的情况下,您总是必须在swift文件中使用import SnapKit
才能使用其中的内容,就像Foundation示例一样。然而,如果您导入另一个导入SnapKit的模块,(我对此一无所知,所以)让我们称之为MyKit
。你只需要写
import MyKit
使用SnapKit和MyKit中的所有东西!
简而言之,一些模块导入其他模块。这就是为什么有时可以省略导入