An excellent piece of code to do the above is here : //clang++ -std=c++11 -stdlib=libc++ -framework Foundation nsarray.mm -o nsarray /* Note: * - libstdc++ has been frozen by Apple at a pre-C++11 version, so you must opt for the newer, BSD-licensed libc++ * - Apple clang 4.0 (based on LLVM 3.1svn) does not default to C++11 yet, so you must explicitly specify this language standard. */ /* @file nsarray.mm * @author Jeremy W. Sherman * * Demonstrates three different approaches to converting a std::vector * into an NSArray. */ #import #include #include #include int main(void) { @autoreleasepool { /* initializer list */ std::vector strings = {"a", "b", "c"}; /* uniform initialization */ //std::vector strings{"a", "b", "c"}; /* Exploiting Clang's block->lambda bridging. */ id nsstrings = [NSMutableArray new]; std::for_each(strings.begin(), strings.end(), ^(std::string str) { id nsstr = [N