Swift导入机制



我正在使用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

使用SnapKitMyKit中的所有东西!

简而言之,一些模块导入其他模块。这就是为什么有时可以省略导入

最新更新