Why can't we use C-strings as SELs?
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) { #if SUPPORT_IGNORED_SELECTOR_CONSTANT if ((uintptr_t)sel == kIgnore) return "<ignored selector>"; #endif return sel ? (const char *)sel : "<null selector>"; } So, what this tells me is that a SEL is equivalent to a C-string, in every mannerism. Doing a hex dump of the first 16 bytes of SEL that contains @selector(addObject:) gives the following: 61 64 64 4F 62 6A 65 63 74 3A 00 00 00 00 00 00 Which is equal to the C-string addObject: .