respondsToSelector should be sufficient, do we need the macro?