08/04/11 00:41:17
stringWithUTF8String に渡す文字列は、同一スコープに実体がないと
いけないなどの制限があるのでしょうか?
#include <string>
#include <Foundation/Foundation.h>
std::string foo() { return "foo"; }
const char* bar() { return foo().c_str(); }
int main() {
NSString* str = [NSString stringWithUTF8String:bar()];
NSLog(@"bar()=%s", bar());
NSLog(@"str=%@", str);
}
・実行結果
bar()=foo
str=
bar() の結果を std::string に保持して c_str() を渡せば成功します。
この挙動でどつぼにはまりました。