NSRails - Rails + Objective C Framework
nsrails.com
nsrails.com
I used the word "inspect" carefully. Apple is probably looking for calls to private APIs by looking at the addresses of functions called in your binary with the addresses of private APIs.
They are probably looking for method swizzling of Cocoa APIs by looking at the address passed into method_exchangeImplementations, class_replaceMethod, etc.
Looking at the symbols within a binary is probably more effort than it is worth and probably isn't going to be very effective.
edit: filed an issue here: https://github.com/dingbat/nsrails/issues/4
Edit: maybe you thought NSRails is an attempt to port Rails to iOS? Please see the readme - that's not the purpose of the framework. NSRails just allows iOS to talk to Rails simply and effectively.
I did consider this possibility but I think I preferred the elegance of plain NS, and still highly doubt that Apple will release or has any classes named NSRailsModel :) But I do absolutely agree, it's better to be on the cautious side. It's very likely that NSRailsModel will change in the future.
See the ticket posted somewhere in this thread for more details, I'd prefer to keep the discussion there.
NSRailsSync(*)
Here's what's happening. Ingenious stuff. //adding a # before va_args will simply make its contents a cstring
#define _MAKE_STR(...) NSRStringFromCString(#__VA_ARGS__)
//define NSRailsSync to create a method called NSRailsSync, which returns the entire param list
#define NSRailsSync(...) \
+ (NSString*) NSRailsSync { return _MAKE_STR(__VA_ARGS__); }“Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.”
Seeing the recent evolutions, I thought Rails people learned that magic in code leads to debugging unhappiness.
We tend to look at macros as dangerous, but this is a pretty clean usage of macros, it's basically a function that turns the arguments into a string. Simple and easy to debug. Don't you think?
Edit: Discussion about that quote: http://stackoverflow.com/questions/1103299/help-me-understan...
Especially since without the macro you’d just need to write two characters more or, even better, a clearly named constant, like kNSRAllProperties.
The NS classes were introduced as part of OPENSTEP, which leads some people to suggest that NS = NeXT + Sun.
This is incorrect - the NS prefix was introduced in NEXTSTEP along with EOF.