Nous avions l'habitude de déclarer property
pour transmettre des données entre les classes comme suit:
.h file (interface file)
@property (nonatomic) double topSpeed;
.m file (implementation file)
@synthesize topSpeed;
Maintenant, il n'y a pas de classe interface
, comment passer des données entre les classes .Swift
?
Swift ne différencie pas les propriétés des variables d’instance (c’est-à-dire le magasin sous-jacent d’une propriété). Pour définir une propriété, vous déclarez simplement une variable dans le contexte d'une classe.
Une classe Swift est simplement un fichier ClassName.Swift.
Vous déclarez une classe et des propriétés en tant que
class SomeClass {
var topSpeed: Double
var aStrProperty: String
var anIntProperty: Int
//Initializers and other functions
}
Vous accédez aux valeurs de propriété via la notation par points. Depuis Xcode6 beta 4, il existe également des modificateurs d'accès (public
, internal
et private
) dans Swift. Par défaut, chaque propriété est internal
. Voir ici pour plus d'informations.
Pour plus d'informations, reportez-vous au Guide de programmation Swift :
Propriétés stockées et variables d'instance
Si vous avez de l'expérience avec Objective-C, vous savez peut-être qu'il fournit deux façons de stocker des valeurs et des références dans le cadre d'une instance de classe . Outre les propriétés, vous pouvez utiliser des variables d'instance comme support stocker pour les valeurs stockées dans une propriété.
Swift unifie ces concepts dans une déclaration de propriété unique. UNE La propriété Swift n'a pas de variable d'instance correspondante, et le magasin de support d'une propriété n'est pas accessible directement. Ce Cette approche évite les confusions sur la manière dont la valeur est accédée dans différents contextes et simplifie la déclaration de la propriété en un seul, déclaration définitive. Toutes les informations sur la propriété, y compris son nom, type et caractéristiques de gestion de la mémoire - est défini dans un emplacement unique dans la définition du type.
Utilisation des propriétés.
Du Guide de programmation Swift :
Propriétés stockées et variables d'instance
Si vous avez de l'expérience avec Objective-C, vous savez peut-être qu'il fournit deux façons de stocker des valeurs et des références dans le cadre d'une instance de classe . Outre les propriétés, vous pouvez utiliser des variables d'instance comme support stocker pour les valeurs stockées dans une propriété.
Swift unifie ces concepts dans une déclaration de propriété unique. UNE La propriété Swift n'a pas de variable d'instance correspondante, et le magasin de support d'une propriété n'est pas accessible directement. Ce Cette approche évite les confusions sur la manière dont la valeur est accédée dans différents contextes et simplifie la déclaration de la propriété en un seul, déclaration définitive. Toutes les informations sur la propriété, y compris son nom, type et caractéristiques de gestion de la mémoire - est défini dans un emplacement unique dans la définition du type.
Les propriétés dans Objective-C correspondent aux propriétés dans Swift. Il existe deux manières d'implémenter des propriétés dans Objective-C et Swift:
var topSpeed : Double
ou let topSpeed : Double = 4.2
dans une déclaration de classe, exactement comme vous déclareriez une variable locale dans un corps de fonction. Vous ne pouvez pas spécifier le nom de la variable d'instance de sauvegarde car, eh bien, il n'y a actuellement aucune variable d'instance dans Swift. Vous devez toujours utiliser la propriété au lieu de sa variable d'instance de sauvegarde.var topSpeed : Double { get { getter code here } set { setter code here } }
(pour les propriétés readwrite
) ou var topSpeed : Double { getter code here }
(pour les propriétés readonly
).Il semble qu'au moins une partie de votre question concerne la communication de l'interface d'une classe donnée avec d'autres classes. Comme Java (et contrairement à C, C++ et Objective-C), Swift ne sépare pas l'interface de l'implémentation. Vous n'avez pas import
un fichier d'en-tête si vous souhaitez utiliser des symboles définis ailleurs. Au lieu de cela, vous import
un module , comme:
import Foundation
import MyClass
Pour accéder aux propriétés d'une autre classe, importez cette classe.
Propriétés stockées et variables d'instance
Si vous avez de l'expérience avec Objective-C, vous savez peut-être qu'il fournit deux méthodes pour stocker des valeurs et des références dans le cadre d'une instance de classe. Outre les propriétés, vous pouvez utiliser des variables d'instance comme magasin de stockage pour les valeurs stockées dans une propriété.
Swift unifie ces concepts dans une déclaration de propriété unique. Une propriété Swift n'a pas de variable d'instance correspondante et l'accès au magasin de sauvegarde d'une propriété n'est pas direct. Cette approche évite les confusions sur le mode d’accès à la valeur dans différents contextes et simplifie la déclaration de la propriété en une seule déclaration définitive. Toutes les informations sur la propriété, y compris son nom, son type et ses caractéristiques de gestion de la mémoire, sont définies dans un emplacement unique dans le cadre de la définition du type.
Du livre de programmation rapide:
struct FixedLengthRange {
var firstValue: Int
let length: Int
}
var rangeOfThreeItems = FixedLengthRange(firstValue: 0, length: 3)
Je dis: typealias
est encore plus équivalent dans Swift pour @synthesize
il suffit de regarder ce lien: https://docs.Swift.org/Swift-book/ReferenceManual/Declarations.html