Endianness of iPhones?

even if you think you do not need to know the endianness someone might do. No need to explain why someone does not need it because you may do not know the context. The question is not "do I need to know endianness" but rather "is it big- or little endian". So concentrate on the subject please!

Having said that probably it is the best practice if we do not re-invent the wheel and just rely on the macros Apple provides for this. The reason is because they have spend quite some time to optimize these macros and made sure that works well with the simulator as well as on Mac, iPhone and all of their OS' and hardware.

If you dig down what is happening when you invoke CFSwapInt16BigToHost you may can see comments that suggests these macros are producing probably the best machine code you can get with the help of the compiler optimization:

OS_INLINE
uint16_t
_OSSwapInt16(
    uint16_t        data
)
{
  /* Reduces to 'rev16' with clang */
  return (uint16_t)(data << 8 | data >> 8);
}

OS_INLINE
uint32_t
_OSSwapInt32(
    uint32_t        data
)
{
#if defined(__llvm__)
  data = __builtin_bswap32(data);
#else
  /* This actually generates the best code */
  data = (((data ^ (data >> 16 | (data << 16))) & 0xFF00FFFF) >> 8) ^ (data >> 8 | data << 24);
#endif

  return data;
}

Endianness isn't something that end users have any real interaction with - but here is a 10,000 foot summary of what this means for users of Apple products.

In a nutshell - endianness for an internal processor is the same as the writing direction for a language. When you look at letters of an english text, we all agree to start on the top left and read first right then down. Other languages start on the right and read to the left and some even read down first before moving left or right.

It doesn't really matter to a user if the bits in an internal representation of an address or number gets stored little endian or big endian. In fact OS X on a Mac adheres to a big-endian representation and iOS adheres to little-endian ordering. This fact doesn't in any way mean that the two devices can't work together properly. This works because this representation only happens internally and doesn't get exposed to us as users.