Accueil Médias sociaux Comment utiliser le comptage automatique des références (ARC) pour votre application iOS - les nuls

Comment utiliser le comptage automatique des références (ARC) pour votre application iOS - les nuls

Vidéo: 028 — Objective C, autorelease pool 2025

Vidéo: 028 — Objective C, autorelease pool 2025
Anonim

Vous pouvez utiliser ARC pour votre application iOS. Le comptage automatique des références (ARC) est une fonction au niveau du compilateur qui simplifie le processus de gestion des durées de vie des objets Objective-C. Au lieu de devoir vous rappeler quand conserver ou libérer un objet, ARC évalue les exigences de durée de vie de vos objets et synthétise automatiquement les appels de méthode appropriés au moment de la compilation.

Ce n'est pas un nouveau modèle de mémoire d'exécution - et ce n'est pas un garbage collector. Toute l'action se déroule dans le compilateur. L'ARC prend en charge le processus de conservation et de libération des objets en tirant parti des conventions de dénomination (et en faisant appliquer le compilateur). Il s'appuie également sur de nouveaux qualificateurs de propriété de pointeur d'objet.

Pour ne pas vous inquiéter, ARC est en réalité beaucoup plus rapide (a de meilleures performances) que la gestion de la mémoire par vous-même.

ARC n'automatise pas malloc () et free () (fonctions C) et n'automatise pas (CF) ou (CG).

Pour être en mesure de gérer la mémoire à votre place, l'ARC impose certaines restrictions, notamment l'application de certaines pratiques exemplaires et l'interdiction de certaines autres pratiques. Vous n'aurez pas à vous inquiéter de la plupart de cela dans une application créée pour utiliser ARC.

Voici les règles que vous devez suivre pour utiliser ARC dans votre application.

  • Règle 1: n'appelez pas les méthodes retain , release ou autorelease . De plus, vous ne pouvez pas implémenter de coutume ou de méthodes.

    Si vous débutez en programmation Objective-C, cette règle ne vous dira rien, car ce n'est pas quelque chose que vous aurez fait dans vos applications existantes. La seule raison pour laquelle vous aurez besoin de connaître cette règle est de comprendre ce que fait le code non-ARC pour gérer la mémoire. Si vous avez une ancienne main, vous utiliserez ces méthodes, et vous serez heureux d'apprendre pas à les utiliser.

    Vous pouvez fournir une implémentation personnalisée de dealloc si vous devez gérer d'autres ressources.

  • Règle 2: Ne stockez pas les pointeurs d'objet dans les structures C. Parce que le compilateur doit savoir quand les références vont et viennent, vous ne pouvez pas stocker les pointeurs d'objet dans les structures. Pour la plupart des lecteurs, ce ne sera pas un problème car vous utiliserez des objets plutôt que des structures en C.

  • Règle 3: Informez le compilateur de la propriété lorsque vous utilisez des objets de type Core Foundation. Dans les applications iOS, vous utilisez souvent le framework CoreFoundation.

    Les objets CoreFoundation sont quelque chose qui commence par un CF - des choses comme les fonctions du carnet d'adresses, par exemple.Un objet CoreFoundation ressemblerait à ceci:

    AudioServicesCreateSystemSoundID ((__bridge CFURLRef) burnRubberURL, burnRubberSoundID);
    

    ARC ne gère pas automatiquement les durées de vie des types CoreFoundation, et vous pouvez utiliser des règles et fonctions de gestion de la mémoire CoreFoundation, telles que CFRetain et CFRelease (ou les variantes spécifiques au type correspondantes).

    La plupart du temps, vous n'avez pas à vous soucier de la gestion de la mémoire, car vous allez généralement lancer un objet Objective-C vers un objet de type CoreFoundation, ou inversement, ce qui fait que CoreFoundation n'a plus de mémoire. gestion dans votre code. Cependant, vous devez toujours informer le compilateur des implications de la gestion de la mémoire.

    Vous dites simplement à ARC de ne pas s'inquiéter en utilisant un casting de _bridge.

    Si vous disposez d'une gestion de la mémoire CoreFoundation, des macros telles que CFBridgingRetain ou CFBridgingRelease transfèrent la propriété entre ARC et CoreFoundation.

  • Règle 4: Utilisez le mot-clé @autoreleasepool pour marquer le début d'un blocage autorelease. Ce n'est pas quelque chose dont vous serez préoccupé - ou que vous ferez jamais, d'ailleurs. Mais c'est une règle néanmoins.

  • Règle 5: Suivez les conventions de nommage. Le compilateur sait s'il faut conserver un objet en fonction de ce qui est retourné. Parfois, l'objet renvoyé par une méthode est conservé, et parfois il est autoreleased plus tard. Si l'objet doit être auto-libéré, l'objet doit être conservé. S'il est déjà conservé, vous ne voulez pas que le compilateur fasse quoi que ce soit.

    La seule façon pour le compilateur de savoir si un objet a été conservé lors de son retour est de respecter certaines conventions de dénomination. Sous ARC, ces conventions de nommage font maintenant partie du langage, et vous devez les suivre.

    Le compilateur sait qu'un objet retenu a été renvoyé lorsque le premier mot de la première partie du sélecteur (le nom de la méthode) est alloc, new, copy, muteable copy ou init. Ces méthodes transfèrent la propriété - où propriété transférée signifie que l'objet a été conservé pour vous. Un exemple est la méthode initWithFormat: NSString. (Rappelez-vous que la «propriété» n'est pas la propriété exclusive: plusieurs objets peuvent posséder simultanément un seul objet.)

    De plus, vous ne pouvez pas donner un nom à une propriété qui commence par.

  • Règle 6: Il suffit de suivre les règles. Ça y est - pas de relâchement ou d'auto-libération. Il suffit de suivre les règles et le code au contenu de votre coeur sans vous soucier de la gestion de la mémoire.

    Sauf, bien sûr, dans certaines situations, vous devrez indiquer explicitement au compilateur ce que vous voulez faire. Dans ces cas, vous devrez indiquer explicitement au compilateur la durée de vie d'un objet.

Comment utiliser le comptage automatique des références (ARC) pour votre application iOS - les nuls

Le choix des éditeurs

Comment détecter les atteintes à la sécurité sur vos fichiers journaux Web hébergés - dummies

Comment détecter les atteintes à la sécurité sur vos fichiers journaux Web hébergés - dummies

Grande question est toujours sur la sécurité. Comment pouvez-vous repérer les failles de sécurité hébergées sur le Web pour protéger votre site et garantir qu'il ne sera pas piraté? La réponse courte est la suivante: Vous ne pouvez pas. Tout est piratable avec suffisamment de temps, des cerveaux sournois et des ressources. Cependant, il y a des choses que vous pouvez faire pour vous protéger un peu. ...

Comment utiliser MySQL Workbench pour votre site Web - dummies

Comment utiliser MySQL Workbench pour votre site Web - dummies

Bien que phpMyAdmin et d'autres outils d'hébergement Web Pour gérer les bases de données, il est possible que vous ayez besoin de quelque chose de plus puissant. MySQL Workbench est une bonne source dans cette instance. MySQL Workbench est un outil de conception et d'administration de base de données gratuit créé par Oracle qui réunit deux produits: MySQL Query Browser et MySQL ...

Le choix des éditeurs

Comment mettre du texte sur un cercle dans QuarkXPress - texte fictif

Comment mettre du texte sur un cercle dans QuarkXPress - texte fictif

Sur un cercle - c'est-à-dire texte suivant l'extérieur d'un cercle ou ovale - est un élément de conception commun dans les mises en page. C'est vraiment facile à faire dans QuarkXPress, mais ce n'est pas du tout évident comment. Procédez comme suit: Obtenez l'outil Ovale de la palette Outils et dessinez ...

ÉChanges peer-to-peer par rapport aux échanges Bitcoin réguliers - mannequins

ÉChanges peer-to-peer par rapport aux échanges Bitcoin réguliers - mannequins

Deux types d'échanges de bitcoins sont utilisés : peer-to-peer et régulier. D'une part, il y a les échanges de bitcoins réguliers, qui utilisent un carnet de commandes pour faire correspondre les ordres d'achat et de vente entre les personnes. Cependant, ni l'acheteur ni le vendeur n'ont la moindre idée de l'identité de l'autre partie, ce qui permet à tous les utilisateurs ...

L'interface d'application QuarkXPress - les nuls

L'interface d'application QuarkXPress - les nuls

Les palettes visibles à gauche, à droite et en bas de QuarkXPress sont flottantes - vous pouvez les faire glisser n'importe où qui vous convient. Contrairement aux palettes, les menus de la barre de menu sont collés: vous devez toujours passer la souris à la barre de menu pour y accéder. Cependant, ...

Le choix des éditeurs

Sept erreurs d'optimisation de moteur de recherche - nuls

Sept erreurs d'optimisation de moteur de recherche - nuls

Lorsque vous essayez d'obtenir votre site Web, c'est facile de faire des erreurs d'optimisation de moteur de recherche. Voici quelques-unes des erreurs de référencement les plus courantes. Vous ne connaissez pas vos mots-clés C'est également un problème majeur: la grande majorité des sites sont créés sans que les propriétaires ou les développeurs du site ne sachent vraiment ce que sont les mots-clés ...

Soumission de pages aux moteurs de recherche pour l'optimisation - dummies

Soumission de pages aux moteurs de recherche pour l'optimisation - dummies

Vous avez probablement vu "soumission "Services annoncés pour le référencement, peut-être sous la forme de spam dans votre boîte de réception, offrant de soumettre votre site Web à des centaines de moteurs de recherche, encore et encore. Dans la plupart des cas, ces services de soumission sont une perte totale de temps et d'argent. Voici comment obtenir votre site Web dans les moteurs de recherche. You ...

Six mythes À propos de Search Engine Optimization - mannequins

Six mythes À propos de Search Engine Optimization - mannequins

Il existe une grande confusion dans le monde des moteurs de recherche. beaucoup de mythes. Voici quelques-uns des mythes communément crus qui peuvent nuire à vos positions de moteur de recherche. Tout est une question de métabalises et de soumissions. C'est le mythe le plus répandu et le plus préjudiciable de tous, tenu par de nombreux concepteurs et développeurs Web. ...