Symbols don't have to be human readable either. You can easily write completely inscrutible function names in source code.
I don't see how this point really matters. Sure you can name your functions and selectors stupidly all the same. There are also probably obfuscators for it (Proguard-like?). But that's not really relevant to my point.
Comments
The selector system is enough even without debug symbols, since all object method calls are identified at runtime by a human readable string.
Fun fact selectors do not have to be human-readable
Symbols don't have to be human readable either. You can easily write completely inscrutible function names in source code.
I don't see how this point really matters. Sure you can name your functions and selectors stupidly all the same. There are also probably obfuscators for it (Proguard-like?). But that's not really relevant to my point.