So, I\'ve been messing around with the objc-runtime again (surprise surprise), and I found an interesting block of code here:
const char *sel_getName(SEL sel) {
Selectors are interned C strings and are compared by their address, not their contents. The string contents is only used for converting to/from an external string representation. Interning is done to improve performance--when the runtime is looking up the method implementation that matches a selector it can compare the selector pointers directly instead of dereferencing each pointer and comparing the characters.