Hmmm, without knowing what your method frontButtonScaleUp does, I cannot give a definitive answer, but I can tell you this - the tag attribute of an NSView is a simple int with no gaurantee of being a useful value. It is a convenience attribute on the class, given to developers to use pretty much however they want. In no way shape or form should this attribute be ever confused with a pointer!
On this line of code:
if (elapsed >= delay)
[self frontButtonScaleUp:[sender tag]];
I can't really comment because like I said, I don't know what the definition or implementation of frontButtonScaleUp is. But I am guessing you are expecting an id of some sort and passing in an int instead. Your code will almost assuredly blow up here, if your unlucky it will do so at random.
This line:
else
[self performSelector:@selector(frontButtonScaleUp) withObject:[sender tag afterDelay:delay - elapsed];
Is definitely wrong - once again, int != id.
Im guessing that you are trying to increase the size of a button after its been tapped, after a certain delay? You already have the id of the button, it's the sender parameter into your function. Just pass that into your frontButtonScaleUp method and you should get past your compiler warning and *EXC_BAD_ACCESS* exception.
if (elapsed >= delay)
[self frontButtonScaleUp:[sender]];