Polidea / ios-class-guard

Simple Objective-C obfuscator for Mach-O executables.
http://www.polidea.com
1.64k stars 240 forks source link

Build failed #35

Open mariokovacevic opened 9 years ago

mariokovacevic commented 9 years ago

I have a project with two targets and few pods. When i successfully obfuscate it, the build is not working.

Error: Expected an Objective C directive after "@" This error exists in every class where @optional is used

neuralmer commented 8 years ago

@mariokovacevic,

It sounds like ios-class-guard is trying to rename the symbol "optional", and the Xcode preprocessor will replace the optional-part of @optional based on a #define like #define optional x123.

We (PreEmptive Solutions) forked iOS Class Guard, creating a new product, called PreEmptive Protection for iOS - Rename (or PPiOS-Rename), that fixes this issue and a number of others.

In your case, PPiOS-Rename considers optional to be a keyword, and it is automatically excluded. Usage of @optional would, therefore, not cause a problem.

Additional symbols may be excluded as needed using something like:

ppios-rename --analyze -x somesymbol path/to/your.app

Note that PPiOS-Rename changes the way the obfuscation process is integrated into the build (to make it easier to use), so you'll probably need to make changes to your build, and to pay attention to the new/changed argument names.

Please give it a try and let us know how it works for you.