Caractéristiques 10 Objective-C qui ne sont pas à Swift

Si vous êtes un développeur expérimenté Objective-C, cette liste vous rappelle de certaines fonctionnalités vous pouvez être utilisé pour qui ne sont pas disponibles à Swift. Dans chaque cas, des solutions de contournement et des stratégies pour remplacer vos vieux amis essayé-et-vrai Objective-C sont fournis. Et ne vous inquiétez pas: Dans la plupart des cas, vous finirez écrire moins de code et votre code sera plus robuste.

Sommaire

Dire au revoir à tête (.h) fichiers

Dans Swift, l'en-tête (.h) Fichiers ont disparu. La .h et .m fichiers en-têtes et les organismes (à l'origine appelés messages) d'une classe sont regroupés en un seul .rapide fichier.

Dire adieu à pointeurs fantômes (presque toujours)

Il est difficile (mais pas impossible) de faire référence à un pointeur ballants à Swift. Au cours des quelques dernières années, Objective-C a également fait ces références plus difficile, mais ils restent nettement possible. Vous pouvez éviter les problèmes avec ces références si vous faites certain que des pointeurs vers les instances sont toujours mis en avant qu'ils ne soient utilisés et qu'ils sont mis à nul avant l'instance est libérée. Swift utilise très peu de pointeurs, donc ils ne peuvent pas balancer.

Oublier les variables non initialisées et propriétés

Swift nécessite une initialisation des propriétés déclarées, variables et constantes. Cela supprime immédiatement toute une série de problèmes qui peuvent se produire lorsque vous référencez des variables non initialisées et peut soit bloquer ou d'entraîner des erreurs inattendues (et souvent irremplaçable).

Exploiter une superclasse communs comme NSObject

La plupart des objets en Objective-C sont des sous-classes NSObject- la quasi-totalité d'entre eux se conformer à la NSObject protocole. Ainsi, des collections telles que NSArray et NSDictionary peuvent contenir des objets de toute nature tant qu'ils sont sous-classes de NSObject. Dans Swift, les éléments d'un tableau ou un dictionnaire ne pas avoir une superclasse commune, mais ils ne doivent avoir un type commun de sorte qu'ils peuvent être manipulés. Ceci est maintenant de votre responsabilité.

Type de Managing coulée

Objective-C gère le type coulée où il peut, mais si votre hypothèse sur la bonne fonte diffère de l'Objective-C'S, votre code peut se bloquer. Avec Swift, vous avez à faire le casting explicitement. Toutefois, Swift peut déduire un type de valeurs initiales des variables ou des constantes, donc, sur la balance, votre code est plus robuste et vous pouvez effectivement avoir besoin de moins de ce parce que vous pouvez laisser types INFER Swift pour vous.

Préférant fermetures de blocs




Blocs en Objective-C sont comme des fermetures dans d'autres langues. Dans Swift, cette fonction est assurée par des fermetures, et la documentation reflète cette utilisation.

Se débarrasser de la gestion de la mémoire de l'héritage

Bien que la gestion de la mémoire manuelle avec alloc et dealloc a été # 173-désapprouvée dans Swift, beaucoup de code existe toujours que soit utilise ou se réfère à elle dans les commentaires et les lignes en commentaire de code. Si vous convertissez ancien code plutôt que d'écrire un nouveau code Swift à partir de zéro, il vaut la peine d'enlever ces vestiges de la gestion manuelle de la mémoire. Il est très peu probable qu'ils reviendront.

Remplacement de décorateurs de propriété

Au lieu d'Objective-C décorateurs de propriété de, Swift a annotations dans les déclarations. Le mélange d'attributs, tels que lecture seulement, fort, faible, et autres, est allé avec Swift. Les informations nécessaires sont compris dans les types.

Utiliser un style Swift pour accéder aux propriétés de classe

Le style Swift utilise la syntaxe à point pour référencer des objets au sein d'une classe, la structure ou l'énumération. Retirer toute syntaxe à base de support en restes.

Clarifier le contrôle d'accès Swift

Les directives de la vie privée en Objective-C sont traités différemment à Swift. En Objective-C vous utilisez les directives suivantes:

  • private

  • protected

  • public

Déclarations de méthodes et propriétés peuvent également être placés à la fois dans le .h déposer ou à une extension de classe d'une .m fichier. Ceci permet d'obtenir deux façons disjoints de # 173 spécifiant la visibilité.

Swift n'a pas .h ou .m fichiers et, par conséquent, pas d'extensions de classe avec hiddendeclarations. Il dispose d'un modèle de contrôle d'accès unique à l'aide

  • public

  • privé

  • interne

Ceux-ci font partie de la langue elle-même plutôt que d'être des directives de compilation.


» » » » Caractéristiques 10 Objective-C qui ne sont pas à Swift