Are you building for one architecture? If you build for multiple architectures and use the -all_load linker -all_load , this violates the linker's ability to ignore characters that are defined for multiple architectures. As a test, try building only for armv6 and see if the error persists.
There is a good blog post here and a similar issue being discussed here .
Finally, you can add the following env var to debug problems with overriding categories: OBJC_PRINT_REPLACED_METHODS=YES . This will register the names of methods that have been overridden by categories, just in case this is a problem.
source share