web-dev-qa-db-fra.com

Swift class vs Cocoa Touch Class dans Xcode6

Je suis nouveau dans le développement iOS et j'ai commencé directement avec Swift.

Lorsque je veux ajouter un nouveau fichier à un projet, le IDE me présente deux fichiers qui semblent être utilisés de manière interchangeable dans les tutoriels que j'ai vus jusqu'à présent. Ils sont "Cocoa Touch Class "et" Swift Class ".

Lorsque je crée une nouvelle classe Cocoa Touch, c'est ce que j'obtiens (selon la classe héritée)

import UIKit

class CtTest: NSObject {

}

et quand je crée un nouveau fichier Swift, j'obtiens ceci: -

import Foundation

L'extension pour ces deux classes est .Swift

Si j'ajoute la définition de classe au fichier Swift et le modifie comme suit: -

import UIKit
import Foundation

class SwTest:NSObject
{
}

y a-t-il une différence entre les deux fichiers.

Si oui, quelles classes sont préférées dans quels scénarios, par exemple. Afficher les contrôleurs, les modèles, etc.

Merci

31
Rajeev Bhatia

Il n'y a aucune différence entre les deux modèles différents à part le code qu'ils ont mis dans le fichier par défaut. Comme vous l'avez remarqué, ils ont tous les deux la même extension et ce sont tous les deux des fichiers texte - le compilateur ne les traite pas différemment.

La règle générale consiste à importer un module uniquement si vous en avez besoin dans ce fichier - essentiellement si vous obtenez une erreur de compilation dans le cas contraire. Vous obtiendrez une erreur de compilation en raison d'importations manquantes si vous essayez d'utiliser des types à partir de celles-ci.

Fondation

La fondation est essentiellement la bibliothèque Apple standard de développement, implémentée dans Objective-C. Elle comprend des types de données comme NSArray, NSString et NSDictionary. Cependant, Swift fournit des remplacements pour ces types de données: Array, String et Dictionary. Vous devez uniquement avoir import Foundation dans des fichiers qui tentent d'interagir avec les API Objective-C. Cependant, puisque toutes les API existantes sont écrites en Objective-C (depuis Swift est tellement nouveau), vous devrez importer Foundation dans presque tous les fichiers à l'exception des objets de domaine de base.

UIKit

UIKit inclut réellement Foundation. Si vous importez UIKit, vous n'avez pas besoin d'importer également Foundation. UIKit est une collection d'API standard spécifiques à l'interface iOS. Il comprend des vues comme UITableView et des contrôleurs comme UIViewController. Vous devrez le faire lors de votre travail sur l'interface utilisateur des applications iOS.

Classe Cocoa Touch

Ce modèle est utile pour sous-classer les classes d'UIKit et potentiellement pour que Xcode génère des fichiers de générateur d'interface pour vous. Si vous n'avez besoin d'aucune de ces choses, vous devez simplement utiliser le modèle de classe Swift. Ne faites hériter votre objet de NSObject que si vous en avez vraiment besoin (si vous devez pouvoir utiliser votre Swift d'Objective-C). Si vous n'héritez pas de NSObject, il y a des optimisations supplémentaires que le compilateur peut faire et cela évite certaines des parties les plus lentes du runtime Objective-C .

78
drewag