Accueil Médias sociaux Comment utiliser les objets de bloc dans votre application iOS - les blocs objectifs

Comment utiliser les objets de bloc dans votre application iOS - les blocs objectifs

Vidéo: JOUÉ A MINECRAFT PE AVEC LA MANETTE PS4 SANS LAG ! 2025

Vidéo: JOUÉ A MINECRAFT PE AVEC LA MANETTE PS4 SANS LAG ! 2025
Anonim

Les blocs Objective-C sont comme les fonctions C traditionnelles en ce que les blocs sont de petites unités de code votre application iOS Ils peuvent être transmis en tant qu'arguments de méthodes et de fonctions, puis utilisés lorsqu'ils sont nécessaires pour effectuer un travail. (Comme beaucoup de sujets de programmation, la compréhension des objets de bloc est plus facile quand vous les utilisez.)

Avec iOS 4 et versions plus récentes, un certain nombre de méthodes et fonctions des frameworks système commencent à prendre des blocs comme paramètres.

Gestionnaires d'achèvement
  • Gestionnaires de notification

  • Gestionnaires d'erreur

  • Énumération

  • Tri

  • Ici, vous pouvez utiliser une méthode en bloc pour animer une voiture, mais bloquer Les objets ont également un certain nombre d'autres utilisations, en particulier dans Grand Central Dispatch et la classe NSOperationQueue, les deux technologies recommandées pour le traitement simultané. N'hésitez pas à vérifier le traitement simultané.

L'une des valeurs de l'utilisation des blocs est que vous pouvez accéder aux variables locales (ainsi qu'aux variables d'instance), ce que vous ne pouvez pas faire dans une fonction ou un rappel. Vous n'avez pas non plus besoin de transmettre des données - un bloc peut modifier les variables pour renvoyer des données. De plus, si vous avez besoin de changer quelque chose, il n'y a pas d'API à changer, avec son effet d'entraînement concomitant.

Il est parfois plus facile de suivre ce qui se passe en déclarant une variable de bloc et en la passant comme argument à la méthode. La syntaxe de déclaration, cependant, est similaire à la syntaxe standard pour les pointeurs de fonction, sauf que vous utilisez un caret (^) au lieu d'un astérisque (*).

Si vous regardez animateWithDuration: animations: completion: dans la référence de la classe UIView, vous verrez des animations de durée

+ (void) animateWithDuration: (NSTimeInterval): (void (^) (void)) achèvement des animations: (void (^) (BOOL terminé)) achèvement;

Apple traite maintenant les blocs comme un modèle de conception principal, là-haut avec héritage et délégation - alors ne soyez pas surpris de trouver des blocs de plus en plus utilisés.

Néanmoins, parce que c'est un peu avancé, le code est étudié en profondeur afin que vous soyez à l'aise avec les blocs, malgré la syntaxe vraiment bizarre.

Pour commencer, voici la syntaxe qui définit les animations comme un bloc sans paramètre et sans valeur de retour:

void (^) (void)) animations

completion est défini comme un bloc sans retour value et prend un seul paramètre d'argument booléen:

(void (^) (BOOL terminé)) completion

Lorsque vous créez un bloc inline, vous utilisez simplement l'opérateur caret (^) pour indiquer le début d'un bloc et puis suivez le code inclus dans les accolades normales.C'est ce qui se passait avec les animations

: ^ {self. voiture. center = center;}

et

completion: ^ (BOOL terminé) {[self rotate];}

Bien que dans cet exemple vous utilisiez des blocs inline, vous pouvez également les déclarer comme n'importe quelle autre variable locale. Ajoutez le code en gras à votre méthode testDrive en remplaçant ce que vous avez déjà à cet endroit.

- (IBAction) testDrive: (id) expéditeur {CGPoint centre = CGPointMake (voiture centre x, auto-vue, image origine, y + voiture, taille, hauteur / 2);

void (^ animation) () = ^ () { auto. voiture. centre = centre; }; void (^ achèvement) (BOOL) = ^ (BOOL terminé) { [rotation auto]; }; [UIView animateWithDuration: 3 animations: animation achèvement: achèvement]; } Lorsque vous déclarez un bloc, vous utilisez l'opérateur caret (^) pour indiquer le début d'un bloc avec le code entouré des accolades normales et un point-virgule pour indiquer la fin d'une expression de bloc.

La déclaration dans la liste 10-2 est à peu près la même que celle que vous voyez dans animateWithDuration: animations: completion: déclaration de méthode, sauf que les identifiants ont été déplacés un peu. Les deux sont en gras pour rendre cela un peu plus facile à voir:

+ (void) animateWithDuration: (NSTimeInterval) animations de durée: (

void (^) (void)) achèvement des animations: ( void (^) (BOOL terminé) ) achèvement; Ici, vous déclarez deux variables de bloc en utilisant l'opérateur ^: une avec le nom des animations qui n'a pas de valeur de retour, et une avec le nom d'achèvement qui n'a pas de valeur de retour et prend BOOL comme argument unique:

void (^ animation) () void (^ completion) (BOOL)

C'est comme toute autre déclaration de variable (int i = 1, par exemple), dans laquelle vous suivez le signe égal avec sa définition.

Vous utilisez à nouveau l'opérateur ^ pour indiquer le début du

bloc literal - la définition affectée à la variable de bloc. Le bloc littéral inclut les noms d'argument (finis) ainsi que le corps (code) du bloc et se termine par un point-virgule: void

(^ animation) () = ^ () {soi. voiture. centre = centre;}; void (^ achèvement) (BOOL) = ^ (BOOL terminé) {[auto rotation];}; Une fois que vous aurez compris les blocs, vous trouverez toutes sortes d'occasions de les utiliser pour simplifier votre code.
Comment utiliser les objets de bloc dans votre application iOS - les blocs objectifs

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. ...