SEL firstMethodSelector = @selector(firstMethod); SEL secondMethodSelector = @selector(secondMethod); Method firstMethod = class_getInstanceMethod(self, firstMethodSelector); Method secondMethod = class_getInstanceMethod(self, secondMethodSelector); BOOL methodAdded = class_addMethod([self class], firstMethodSelector, method_getImplementation(secondMethod), method_getTypeEncoding(secondMethod)); if (methodAdded) { class_replaceMethod([self class], secondMethodSelector, method_getImplementation(firstMethod), method_getTypeEncoding(firstMethod)); } else { method_exchangeImplementations(firstMethod, secondMethod); }