Mise à jour - dans les versions plus récentes, il existe une contrepartie directe - voir la réponse de Jean pour plus de détails. Je garde ceci comme référence historique.
Il n'y a pas de contrepartie directe.
L'un des cas d'utilisation courants de la #ifdef DEBUG
dans mon code est de faire des assertions à ce sujet.
Pour un cas d'utilisation courant, vous utiliserez la nouvelle fonction globale assert
en Swift :
Extrait de "The Swift Programming Language" :
let age = -3;
assert(age >=0, "A person's age cannot be less than zero")
Cela ne se déclenchera que lors de l'exécution dans un environnement de débogage (comme lors de la construction et de l'exécution dans xcode).
Pour une solution plus générale, vous pouvez toujours définir un paramètre global DEBUG
et l'utiliser dans votre code :
let debug = true
if debug {
// debug only code
}
Bien que je n'aie pas encore de preuve à l'appui, étant donné le backend de LLVM, vous pouvez être quasiment certain que le code qui est déclaré avec des constantes (c'est-à-dire avec let
et non avec var
) permettra au compilateur d'exécuter DCE (dead code elimination) et d'éliminer ce code de la production dès que vous modifiez sa valeur.
De plus, vous pouvez toujours utiliser le cpp (préprocesseur C) sur du code non-C en écrivant simplement :
cpp myfile
Ce qui produit votre code après #ifdef
etc., remplacées par des valeurs Swift appropriées. Je pense que cela devrait être rarement requis.
1 votes
Comme idée, vous pourriez mettre ceci dans vos en-têtes de pontage obj-c..
60 votes
Vous devriez vraiment attribuer une réponse car vous avez le choix entre plusieurs réponses et cette question vous a valu beaucoup de votes positifs.
0 votes
@Userthatisnotauser vous avez totalement manqué le point. Vous posez une question, vous obtenez de bonnes réponses - choisissez-en une. N'ignorez pas le temps et l'effort.
1 votes
@DavidH Non, en fait c'est l'inverse. Mon commentaire était juste une référence à Hitchhiker's sur 42. Je suis tout à fait d'accord, et je veux upvoter, mais je ne peux pas me résoudre à faire le 43.
1 votes
@Userthatisnotauser le poster a 19k points - les gens ont voté ses réponses mais il ne semble pas se soucier des gens qui l'aident. Je choisis toujours une réponse.
0 votes
Vérifiez leur compte, il est mort.