Some sort of auto boxing is going on here

You can return int or NSNumber and the NSNumber is auto-unboxed somewhere.