Swift导入机制

时间:2016-01-04 04:08:08

标签: 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.
    }

}

2 个答案:

答案 0 :(得分:0)

事实上,只要您在Swift文件中直接使用它,就必须import SnapKit。除非您导入它,否则无法使用它。

另一方面,如果其他框架已导入SnapKit,则无需再次导入。

即:在swift标准库中。

如果您想使用Foundation,则应import Foundation。 如果您import UIKit,则不需要import Foundation,因为UIKit已经import Foundation

答案 1 :(得分:0)

这是因为Swift中的import语句与Python和Java等其他语言的工作方式完全不同。让我在这里澄清一些术语,你import被称为"模块"而不是框架。

在Swift中,一些模块导入其他模块。例如UIKit模块导入Foundation。因此,当您导入UIKit时,您不再需要导入Foundation。因为UIKit已经进口了它。

因此,在您的情况下,您必须在swift文件中使用import SnapKit才能使用其中的内容,就像Foundation示例一样。但是,如果您导入另一个导入SnapKit的模块,(我对此不了解),让我们称之为MyKit。你只需要写

import MyKit

使用SnapKit中的所有内容 MyKit!

简而言之,一些模块会导入其他模块。这就是您有时可以省略导入的原因。