Endianness of iPhones? I know iPhones (and iPads) run on ARM processors, which are little-endian by default (and iOS on itself is little-endian according to the Wikipedia page); however, ARM processors supposedly have the ability to switch between little-endian and big-endian. How possible is this and how does it work?
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 &lt;&lt; 8 | data &gt;&gt; 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 &gt;&gt; 16 | (data &lt;&lt; 16))) &amp; 0xFF00FFFF) &gt;&gt; 8) ^ (data &gt;&gt; 8 | data &lt;&lt; 24);
#endif

  return data;
}