2017-04-03 10 views
0

iOS向けの単一ビューアプリケーションプロジェクトでは、FoundationモジュールがインポートされていないViewControllerファイルのFoundationモジュールで定義されているString型のcontains(_ :)メソッドを使用できます。これはなぜ可能ですか?このファイルにインポートされる唯一のモジュールは、UIKitモジュールです。 contains(_ :)メソッドの定義はUIKitモジュールを通して間接的に提供されていますか?そうなら、どうですか?モジュールがインポートされていないときに、Foundationモジュールで定義されたメソッドを使用できるのはなぜですか?

ViewController.swift:

import UIKit 

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

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

答えて

0

あなたがUIKitモジュールの定義に取られるあなたがコマンド+(もちろん、Xcodeで)インポートラインのUIKitをクリックした場合。あなたがそのファイルの最上部に表示されます最初の行はこれです:

import Foundation 

FoundationUIKitによってインポートされているので、あなたがUIKitをインポートするときFoundationをインポートせずに、あなたのコード内でFoundationメソッドを使用することができます。これが欲しいと思っています:)

+0

あなたの答えをありがとう。あなたの答えが正しい場合は、どのようにそれは遊び場で、コードのこの部分を説明しない: '輸入 Accounts'' sが "こんにちは" ' 'プリント(s.contains( "H"))=ましょう ' アカウントがFoundationをインポートしていないようです。この場合、String型のcontainsメソッドが使用できるのはなぜですか? – candleindark

+0

まず、私の答えがあなたを助けたら、それを「正しい」とマークしてください。その後、あなたの新しい質問のような質問に答えを適用し、自分で答えを見つけ出すことができるかどうかを確認します。あなたができない場合は、問題に関する新しい質問を投稿してください。 – Fahim

関連する問題