私はiOS開発の初心者で、Swiftから直接始めました。
プロジェクトに新しいファイルを追加するとき、IDEは、これまで見てきたチュートリアルで同じ意味で使用されているように見える2つのファイルを表示します。 「および「Swift Class」。
新しいCocoa Touchクラスを作成すると、これが取得されます(継承されたクラスによって異なります)
import UIKit
class CtTest: NSObject {
}
そして、新しいSwiftファイルを作成すると、これが得られます:-
import Foundation
これらのクラスの両方の拡張子は.Swiftです
Swiftファイルにクラス定義を追加し、次のように変更した場合:-
import UIKit
import Foundation
class SwTest:NSObject
{
}
2つのファイル間に残っている違いはありますか。
その場合、どのクラスがどのシナリオで優先されるか。ビューコントローラー、モデルなど.
ありがとうございました
デフォルトでファイルに配置するコード以外、2つの異なるテンプレートに違いはありません。お気づきのように、両方とも同じ拡張子を持ち、どちらもプレーンテキストファイルです。コンパイラはこれらをまったく扱いません。
一般的な経験則は、そのファイルで必要な場合にのみモジュールをインポートすることです。基本的にそうでない場合はコンパイルエラーが発生します。インポートからタイプを使用しようとすると、インポートが欠落しているため、コンパイラエラーが発生します。
Foundationは基本的にApple開発標準ライブラリであり、Objective-Cで実装されています。NSArray、NSString、NSDictionaryなどのデータ型が含まれます。ただし、Swiftこれらのデータ型の場合:配列、文字列、および辞書。必要なのはimport Foundation
Objective-C APIと対話しようとするファイル内。ただし、既存のすべてのAPIはObjective-Cで記述されているため(Swiftは非常に新しいため)、基本的なドメインオブジェクトを除くほとんどすべてのファイルでFoundationをインポートする必要があります。
UIKitには実際にFoundationが含まれています。 UIKitをインポートする場合、Foundationもインポートする必要はありません。 UIKitは、iOSインターフェースに固有の標準APIのコレクションです。 UITableViewのようなビューとUIViewControllerのようなコントローラーが含まれます。 iOSアプリのUIで作業するときは常にこれを重要にする必要があります。
このテンプレートは、UIKitからクラスをサブクラス化し、潜在的にXcodeがインターフェイスビルダーファイルを生成するのに役立ちます。これらのいずれも必要ない場合は、Swift Classテンプレートを使用する必要があります。本当に使用する必要がある場合にのみオブジェクトをNSObjectから継承するようにします。 your Swift Objective-Cのクラス)。NSObjectから継承しない場合、コンパイラが実行できる追加の最適化があり、Objective-Cランタイムの低速部分の一部を回避します。 。