I never really got into low-level decompiling, examining machine code, or any advanced coding topics like that. When articles talk about code in iOS betas revealing upcoming features, what do they mean? I thought iOS was famously closed-source. How can someone get any details from any code?
@alexhall I am not an expert, but just by extracting strings from binaries you can learn a few things. E.g. the command "strings" on nix-likes prints sequences of ASCII characters from any file; "strings /usr/bin/cat" prints a lot of "interesting" stuff.
I suppose you could extract images and stuff like that.
Java decompiles pretty well easily, I assume Swift/Objective C/and others do not, thought.
@alexhall There's a kind of software called disassembler, used among other things to crack software. I don't know if a disassembler is used in the IOS case, though.
@alexhall It's a good question, but I suppose it's just extracting strings. Sometimes it's probably other external assets too, images or sounds.
@alexhall Objective C (unlike say C++) is a very dynamic language, so all iOS and MacOS binaries include metadata about what classes they implement, and what methods and fields those classes have. This lets you do things like instantiating a method selector (essentially a glorified method name) from a string, and then calling that method on some arbitrary object. This is unthinkable in C++. It is my understanding that this sort of thing is used by e.g. InterfaceBuilder and Storyboard / nib files, among other things.
Also what others have said, strings, asset names, filenames etc.