Если вы намереваетесь отправить объекту сообщение, которое, возможно, не реализовано, и знаете, что собираетесь отловить сбои, вам следует использовать вызов:
id myClone = [anObject performSelector:@selector(copy)];
, который объявляет ваше намерение больше непосредственно, что вы вызываете метод, который может не существовать, и вам это нравится. Это более простой способ сделать это, чем подавить предупреждение или подделать метод.
Вы можете определить категорию, которая объявляет этот метод. Наличие определения в области видимости во время компиляции позволит избежать предупреждения. Что-то вроде
@interface MyClass (ShutUpTheCompilerMethods)
- (void)method;
@end
...
[MyClass method] //no warning here