In a macro there isn't any parameter check, change it this way:
#define IPHONE_OR_IPAD_BLOCK(iphoneBlock, ipadBlock) ({ \
if (iphoneBlock && (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)) \
{ \
iphoneBlock(); \
} \
else if (ipadBlock) \
{ \
ipadBlock(); \
} \
})
If it gets used with wrong parameters you'd probably get a syntax error.
If you don't like this behaviour you could change it with an inline function.