Il ne semble pas exister d'obfuscateur de code pour Objective-C. Mais supposons un instant qu'il en existe un.
Apple ne rejettera probablement pas une application obfusquée tant qu'elle ne plante pas. La question principale est : quel est le but de l'obfuscation ? Par exemple, si votre programme utilise un système de protection contre la copie, vous voulez le rendre plus difficile pour un pirate potentiel ou si vous utilisez un algorithme avancé, vous ne voulez pas que les concurrents commerciaux soient capables de le décompiler.
La protection contre la copie est déjà prise en charge sur iOS. Bien que le jailbreak permette de copier et d'exécuter une application normale, je dirais que le nombre réel d'utilisateurs qui le font est assez faible (en tout cas beaucoup plus faible que sur les ordinateurs "ordinaires" comme les PC et les Mac). Pensez-vous que le piratage soit un problème si important que vous ayez besoin de l'occulter ?
Si vous avez des connaissances importantes à protéger, l'obscurcissement peut être utile. L'obfuscation a ses inconvénients : vous ne pouvez plus déboguer votre application obfusquée. Les rapports de crash seront inutiles.
Vous pouvez également lire l'article Obfuscating Cocoa .
Revenons au fait qu'il ne semble pas y avoir d'obfuscateur : Ce que vous peut est cette astuce : disons que vous avez un en-tête comme celui-ci :
@interface MyClass : NSObject {
}
- (void)myMethod;
Vous pourriez faire un obscurcissement bon marché comme celui-ci :
#ifndef DEBUG
#define MyClass aqwe
#define myMethod oikl
#endif
@interface MyClass : NSObject {
}
- (void)myMethod;
De cette façon, vous pouvez toujours utiliser des symboles significatifs dans votre source, mais le compilateur les transforme en "déchets" lorsqu'il ne compile pas pour le débogage.