Generally speaking, only files which contain both Objective-C AND c++ should use the .mm extension. Purely Obj-C files should use .m. It really doesn't cause runtime issues either way, but over use of .mm does slow down compile times.