Swift 3: Date vs NSDate?
Quelle est la différence entre le NS non NS classes? En particulier NSDate
vs Date
? Ne NS
représentent un certain type d'emballage autour de la base non NS
fonctionnalité?
- Je pense que c'est même, Apple changement NSDate à la Date de Swift 3 mais je ne suis pas sûr.
Vous devez vous connecter pour publier un commentaire.
Swift 3 introduit quelques nouvelles superposition des types de valeur pour les
Fondation de la classe de types, tels que
Date
pourNSDate
,Data
pourNSData
et un peu plus. La liste complète et les détails peuvent être trouvés dansCertaines des raisons qui ont été
let
etvar
au lieu de changeant et immuable variantes,Les nouveaux types d'incrustation doit fournir toutes les fonctionnalités que
le correspondant de la Fondation de type a, mais si nécessaire, vous
pouvez toujours fonte d'un type à l'autre.
Lors de la Fondation existante, les Api sont
importés dans Swift, les types sont reliés automatiquement.
À l'égard de
Date
etNSDate
:Date
est un type de valeuret peut être une constante ou une variable:
alors que
NSDate
est un type de référence et immuable.Aussi
Date
estComparable
alors que
NSDate
s ne peut être comparé avec.compare()
.Remarque: Pour ces "types d'incrustation", le type de valeur (struct)
comme
Date
et de sa Fondation de contrepartie (de classe) commeNSDate
sont de types différents, et les deux peuvent être utilisés à partir de Swift.
Il ne doit pas être confondu avec
où la
NS
préfixe a tout simplement été abandonnée pour certains de la Fondationles classes, par exemple
NSBundle
est renommé àBundle
pour Swift 3.NS classes sont en Objective-C classes. Comme Objective-C est le plus vieux langage de programmation pour iOS et MacOS applications, Swift vous permet d'utiliser ces classes structs dans votre code. Ainsi, vous pouvez migrer les applications d'Objective-C, Swift si vous le souhaitez.
La non-NS classes ou des structures sont la Swift équivalents de de la la NS classes ou des structures. Vous pouvez lire plus au sujet de cette question ici ou ici.
Mais attention: Comme Objective-C et Swift ne sont différents langages de programmation, il peut arriver que NS et non-NS les cours ne sont pas entièrement un travail de la même façon.
Ainsi que les réponses données ci-dessus, en plus de la surface littéral, sens du design, NS est un préfixe donné à tout le NextStep jours, avant que Steve Jobs a été appelée à Apple, et c'était une partie naturelle de l'Objective-C syntaxe.
Avancer le développement de Swift, ils ont besoin d'un point de différence évidente, abd il pourrait bien avoir été la CL comme un préfixe (par Chris Lattner) mais évidemment choisi d'avoir une absence de préfixe
La différence entre NS non NS classes, c'est que le NS les classes sont de type référence, alors que l'autre NS les classes sont de type valeur . Dans swift 3 , Apple a introduit des classes de base comme NSDate et re-nommé à Jour, mais depuis swift est basée sur la valeur et les types plutôt que le type de référence, par conséquent, la Date est un type de valeur.
Par exemple:
2 . Admises en tant que bien que la date est constante, mais la mutabilité dépend de la classe plutôt que de laisser vs variable.
alors que
4. n'est pas autorisé non autorisé et le résultat serait une Erreur que de laisser rend 'date' une constante avec " let " comme date Date() de type qui est un type valeur.
NS
types sont des types de valeur (par exemple,Operation
etOperationQueue
). Mais, oui, en général, ils sont, etDate
est certainement. Deuxièmement, il est intéressant de noter qu'il n'est pas judicieux de se référer à la non-NS
"classes" comme la grande majorité d'entre eux ne sont pas des classes à tous. La plupart d'entre eux sontstruct
types de valeur.date
est une constante, mais parce quedateByAddingTimeInterval
n'existe pas surDate
. L'équivalent seraitdate + 1000
, ce qui est légal.Date
la syntaxe de la ligne 4 est soitdate.addingTimeInterval(1000)
oudate + 1000
...NSDate
etDate
ne sont pas la même chose. NS (étape suivante) les classes sont à l'heure actuelle uniquement utilisé en Objective-C, donc en Objective-C pour représenter une variable de date NSDate.En ce qui concerne spécifiquement Swift 3.0 la nouvelle version de Swift Apple a entièrement supprimé le besoin de l'aide de la NS préfixe à l'un des types. Il suffit donc de Swift trois nous utilisons maintenant la Date au lieu de NSDate. pour rendre votre code plus propre
Date
etNSDate
sont pas sur le même type, ils ne sont pas couverts dans github.com/apple/swift-evolution/blob/master/proposals/.... – Les deux NSDate et la Date existent encore peuvent être utilisés dans Swift.NS
types de non-NS
analogues (du moins pas encore).