Vous pouvez définir un point d'arrêt conditionnel dans Xcode en définissant le point d'arrêt normalement, puis en contrôlant-cliquant dessus et en sélectionnant Edit Breakpoint (choisissez Run -> Show -> Breakpoints).
Dans l'entrée du point d'arrêt, il y a une colonne Condition.
Maintenant, il y a plusieurs problèmes à garder à l'esprit pour la condition. Premièrement, gdb ne comprend pas la syntaxe du point, donc au lieu de myObj.name, vous devez utiliser [myObj name] (sauf si le nom est un ivar).
Ensuite, comme pour la plupart des expressions dans gdb, vous devez lui indiquer le type de résultat de retour, à savoir "BOOL". Donc, définissez une condition comme :
(BOOL)[[myObj name] isEqualToString:@"Bar"]
Il est souvent plus facile de faire cela dans le code en ajoutant temporairement du code comme :
if ( [myObj.name isEqualToString:@"Bar"] ) {
NSLog( @"here" );
}
et ensuite mettre le point de rupture sur le NSLog. Ainsi, votre condition peut être arbitrairement complexe sans avoir à vous soucier de ce que gdb peut ou ne peut pas analyser.