为什么在未导入模块时可以使用Foundation模块中定义的方法?

时间:2017-04-03 22:24:27

标签: swift import module

在iOS的单个视图应用程序项目中,我能够使用ViewController文件中未导入Foundation模块的Foundation模块中定义的String类型的contains(_ :)方法。为什么这可能?此文件中导入的唯一模块是UIKit模块。是否通过UIKit模块间接提供了contains(_ :)方法的定义?如果是,怎么样?

ViewController.swift:

import UIKit

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        let s = "Hello"
        print(s.contains("H"))
    }
}

1 个答案:

答案 0 :(得分:0)

如果您在导入行中uint32_t* srcPtr = (uint32_t*)src->get(); uint8_t* dstPtr = dst->get(); dstPtr[0] = ((*srcPtr) >> 16) & 0xFF; dstPtr[1] = ((*srcPtr) >> 8) & 0xFF; dstPtr[2] = (*srcPtr) & 0xFF; dstPtr[3] = ((*srcPtr) >> 24); 命令+单击(当然在Xcode中),您将进入UIKit模块的定义。您将在该文件顶部看到的第一行是:

UIKit

import Foundation 导入Foundation后,您可以在代码中使用UIKit方法,而无需在导入Foundation时导入Foundation。希望这会有所帮助:)