Combien de programmeurs à utiliser, j'ai aussi construire ma propre bibliothèque de fonctions prêtes à être réutilisées dans de multiples projets et des contextes multiples. Permettez-moi de changer le titre de ce post, peut-être un peu plus «risquées mais, néanmoins, comme nous le verrons, non loin de la réalité.
En Objective-C, vous pouvez écrire et appeler C / C + +, y compris l'assemblage pour cette question. Cette caractéristique en fait un langage très polyvalent et, à certains égards, phénoménal. D'une part, vous pouvez utiliser et apprécier la syntaxe purement de l'Objective-C, d'autre part vous pouvez exécuter le code plus rapide portage écrit en ANSI C (peut-être pour Digital Unix ou Sun) et peut s'adapter confortablement dans nos applications iPhone ou iPad; sans parler de tous le noyau BSD est déjà disponible sur Mac OS X!
Suite ...
<a target="_blank" href="http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html#//apple_ref/c/func/NSLog">NSLog()</a> une fonction utile durant les premiers stades d'un projet pour tester et déboguer une application pour iPhone d'Apple ou, plus généralement, dans l'environnement XCode. Etre juste une fonction, tout comme les autres, sa présence se fera sentir, même lors de la publication (release) de notre exécutable. potrebbero influire sulle performance della nostra applicazione, soprattutto se abbiamo inserito NSLog() all'interno di loop. Il devient alors nécessaire d'enlever, d'une certaine façon, toutes les lignes de NSLog() de notre code, car il n'est plus nécessaire, et parce que les appels à NSLog() pourrait affecter les performances de notre application, surtout si nous mettons NSLog() à la «boucle interne.
Immédiatement écarter la solution au "look" et "annuler" parce qu'un jour il pourrait être utilisé à nouveau. Nous excluons la solution du «look» et «commentaires», inconfortable pour la même raison que précédemment. Heureusement, une. Propre, simple, et en utilisant le compilateur correct conditionnelles Ce que nous ferons, dans la pratique, et dire au compilateur d'exclure - s'il ya une condition spécifique - lors de la compilation de nos lignes source qui contiennent NSLog() .
Les directives de compilation et des déclarations de compilation conditionnelle, sont un outil très puissant et très répandue. Ceux venant de l'élaboration de la norme ANSI-C connaît très bien et sera certainement utilizzte dans de nombreuses situations. La particularité de ces «instructions» réside dans le fait, mentionné plus haut, pour être vu par le compilateur et non exécutable. Cette caractéristique les rend utiles dans de nombreux cas et peut résoudre les problèmes par ailleurs très agaçant.
Voyons un exemple de code qui, comme prévu, vous pouvez "supprimer" de la compilation du partage de code, dans notre cas NSLog() :
1 2 3 4 5 6
| # Définir une ACTIVE_NSLOG / / Si la constante est définie ACTIVE_NSLOG remplissez / / Le bloc de code entre # ifdef et # endif # Ifdef ACTIVE_NSLOG " ... bla bla" ) ; NSLog (@ "... bla bla"); # Endif |
). Les instructions conditionnelles font partie de la compilation de la même famille que #define , également, en fait, sont précédés d'un "livre" ( # ). solo se ACTIVE_NSLOG è definito. Dans l'exemple montré que nous avons défini une constante ACTIVE_NSLOG ; lignes de code indique au compilateur de ligne "include" NSLog() que si ACTIVE_NSLOG est défini. Si nous avons pris soin, lors de la rédaction de notre code, de placer des appels à NSLog() dans le bloc #ifdef ... #endif per far sparire, alla prossima compilazione, tutti i nostri NSLog() . #ifdef ... #endif , il suffit de supprimer la définition de la constante ACTIVE_NSLOG à disparaître, la prochaine compilation, tous nos NSLog() .
Une meilleure et finale
Voyons maintenant comment configurer l'environnement XCode pour améliorer encore plus ce que nous avons fait ici! Tout d'abord nous choisissons un nom de constante que nous utilisons dans nos projets d'exclure de la compilation NSLog() . o quello che preferite. Vous pouvez choisir le nom que vous voulez, à partir DEBUG au MIO_DEBUG ou ce que vous préférez. Ouvrez votre projet, neuf ou ancien. Entrez toutes les NSLog() dans le bloc (ou bloc):
1 2 3
| # Ifdef MIO_DEBUG " ... bla bla" ) ; NSLog (@ "... bla bla"); # Endif |
Sélectionnez le fichier principal de votre projet, cliquez sur le bouton droit et choisissez l'option Get Info.

Ceci ouvre la fenêtre avec des informations sur le projet:

Sélectionnez l'onglet Générer, vérifiez que vous êtes dans la configuration Debug (ce qui est le joyau), allez à la section utilisateur et d'ajouter, via le bouton en bas à gauche, un nouveau champ appelé OTHER_CFLAGS . A cette valeur assegnamoli -DMIO_DEBUG=1 . La syntaxe est -D{mia define}=1 .
Cette procédure a deux avantages:
- Nous ne devons pas mettre dans le code
#define MIO_DEBUG 1 , mais nous le faisons à travers les informations du projet. Alors, quand nous allons à remplir la version (l'un sans l' NSLog() ) n'ont pas à se rappeler pour supprimer la ligne #define MIO_DEBUG 1 - La constante est définie par rapport à la configuration, dans notre cas de débogage. Ainsi, le passage à la version de configuration (communiqué) seront absents et les rangées constante avec
NSLog() ne sera pas compilé
Conclusions
La procédure ci-dessus peut être utile dans un cas moltidutine autre, avec NSLog() , n'ont rien à faire. Les instructions conditionnelles peuvent aider le compilateur dans un large éventail de contextes. Ils sont souvent utilisés par les programmeurs pour déterminer le type de système d'exploitation, la version, la cible, la présence de processeurs mathématiques, tout en conservant le même "même" source.
Pour comprendre, par exemple, nous pouvons utilizzre notre constante MIO_DEBUG également intervenir dans d'autres domaines du code:
1 2 3 4 5 6 7 8 9 10
| / / Debug s'ils gagnent le match / / Avec un score de 100 au lieu de 10 000:) # Ifdef MIO_DEBUG score == 100 ) if (score de == 100) # Else score == 10000 ) if (score de == 10000) # Endif { ; [HaiVinto auto]; } |
Pour finir, voici quelques exemples et des variantes:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| / / En général, il ya # Si l'expression / / Si la déclaration semblable à la traditionnelle, donc avec une pleine expression
/ / Vérifier si une constante est définie # Ifdef constante
/ / Vérifier si ce n'est pas une constante définie # Ifndef constante
/ / Else # Else
/ / Fermer le bloc # Endif |
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| / / Par exemple ... # Define DEBUG 1 5 # define MIA_ALTRA_COSTANTE
... # Si DEBUG / / Remplissez ce # Else / / Sinon remplissez cet autre # Endif
# Si MIA_ALTRA_COSTANTE> 4 "..." ) ; NSLog (@ "..."); # Endif |
1 2 3 4
| # Ifndef INCLUDE_MIO_FILE # Définir INCLUDE_MIO_FILE # Include "mio_file.h" # Endif |
Suite ...
. Les nouvelles fonctionnalités de WordPress révisions peuvent être contrôlés et mis en travers define mondiale WP_POST_REVISION . Sa définition peut être inséré dans le fichier wp-config.php :
Suite ...
Pour certains développeurs juste besoin de savoir qu'il ya une nouvelle version de leur programme de développement préféré de courir et d'acheter la mise à niveau. D'autres, à juste titre, plus calme et de maintenir un "semblant" de savoir l'amélioration réelle dans la nouvelle version avant de vous changer vos habitudes. Dans le cas de Adobe Flash CS3 n'est pas beaucoup à attendre, étant donné les nombreux changements que le colis a subi depuis Macromedia a été rachetée par Adobe.
Voici donc 10 bonnes raisons simples, mais importantes, qui, à mon opinion personnelle, assez pour vous convaincre de passer à Adobe Flash CS3 . Je vais me concentrer, bien sûr, uniquement sur les choses qui m'a frappé personnellement, ce n'est pas conçu comme une liste exhaustive de toutes les nombreuses innovations introduites par la suite CS3, seule une volée d'anticiper certaines fonctionnalités de CS3.
1. Installation
L'installation est agréable et rapide, comparé aux versions précédentes. Il comprend, entre autres choses, avec tous les produits Adobe (Dreamweaver CS3, Photoshop CS3 Extended, etc ...) ce qui rend le montage / démontage, et mettre à jour un réel plaisir.
2. Rétrocompatibilité
Une question souvent négligée, mais toujours pris en compte dans l'histoire de Flash: La capacité à gérer les versions précédentes du produit. Dans Flash CS3 a tous les outils pour manipuler, il est de migrer les versions précédentes de nos films. Nous trouvons cette possibilité dans le débogage (débogage séparé ActionScript 2.0 et ActionScript 3.0) est en train de terminer le film. Ecrire désormais applications ActionScript 3.0 Flash pourrait être contre-productif dans certains contextes. Si votre site cible a un trafic élevé vous pouvez constater que de nombreux utilisateurs n'ont pas encore installé la dernière version de Flash Player pour votre navigateur, puis ne serait pas voir le film. Cependant, comme noté ci-dessus, Flash CS3 vous permet de développer des applications Flash rétrocompatibilité mantendedo et donc je ne vois pas cela comme un produit ostocalo nell'upgrade grand.
3. GUI et IDE

L'IDE Flash CS3 (comme Dreamweaver CS3) a été révisé afin de mieux. Les panneaux (voir photo à gauche), souvent inconfortable dans les versions précédentes, ont été complètement repensés et maintenant leur utilisation est beaucoup moins invasive.
En outre, la capacité de minimiser les panneaux (voir figure à droite) est constaté que fait une véritable interface attrayante et fonctionnelle. Quand un panneau est en icône de mode prend beaucoup moins de place et avec un simple clic vous pouvez ouvrir le premier panneau principal toujours visible.
Tous les IDE, en bref, a été révisé, y compris la zone centrale avec la fenêtre d'édition et de code graphique. N'avez-vous pas remarquer tous les changements ou vous gâcher la surprise ...

Suite ...
Derniers Commentaires
datrix : Merci beaucoup!
Robert : Je rispsoto vos questions avec plaisir. L'idée est vraiment géniale. Je suis à la recherche d'une solution ...
Sting : @ Darius - vous pouvez voir un exemple ici: http://www.fight4fun.it/ cliquant sur: CARTES j'espère ...
Vik : Giustappunto je travaille sur un projet et le client m'a demandé de montrer toutes les nouvelles (qui sont CPT) au ...
Giovambattista Fazioli : @ paso: absolument. Il suffit d'identifier le champ [CCI] entrée [/ cci] que vous souhaitez ...