Vous pouvez définir un point d'arrêt conditionnel dans Xcode en définissant le point d'arrêt normalement, puis cliquez dessus tout en maintenant la touche Contrôle enfoncée et sélectionnez Modifier le point d'arrêt (choisissez Exécuter -> Afficher -> Points d'arrêt).
Dans l'entrée de point d'arrêt, il y a une colonne Condition.
Maintenant, il y a plusieurs problèmes à garder à l'esprit pour la maladie. Premièrement, gdb ne comprend pas la syntaxe des points, donc au lieu de myObj.name, vous devez utiliser [myObj name] (sauf si name est un ivar).
Ensuite, comme pour la plupart des expressions dans gdb, vous devez lui indiquer le type de résultat renvoyé, à savoir "BOOL". Alors définissez une condition comme:
(BOOL)[[myObj name] isEqualToString:@"Bar"]
Souvent, il est en fait plus facile de faire cela dans le code en ajoutant temporairement du code comme:
if ( [myObj.name isEqualToString:@"Bar"] ) {
NSLog( @"here" );
}
puis définissant le point de rupture sur le NSLog. Alors votre condition peut être arbitrairement complexe sans avoir à vous soucier de ce que gdb peut et ne peut pas analyser.