Обратите внимание, что эта строка кода:
[name setText:[[NSString alloc] initWithCString:myCPlusPlusObject->cppname.c_str()]];
утечка созданной строки.
Вернитесь и прочитайте правила управления памятью на http://developer.apple.com/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html.
Основная проблема заключается в том, что вы выделили строку, поэтому вы взяли на себя ответственность за нее, а затем никогда не отпускаете ее. Вам следует выполнить одно из следующих действий:
[name setText:[[[NSString alloc] initWithCString:myCPlusPlusObject->cppname.c_str() encoding:NSUTF8StringEncoding] autorelease]];
или
NSString* myCPlusPlusString = [[NSString alloc] initWithCString:myCPlusPlusObject->cppname.c_str() encoding:NSUTF8StringEncoding];
[name setText:myCPlusPlusString];
[myCPlusPlusString release];
или
[name setText:[NSString stringWithCString:myCPlusPlusObject->cppname.c_str() encoding:NSUTF8StringEncoding]];
Последнее является лучшим с точки зрения простоты кода. Средний показатель является лучшим с точки зрения использования памяти, что часто является проблемой для iPhone.
Первый, скорее всего, идентичен последнему - я говорю «вероятно», потому что нет гарантии, что stringWithCString возвращает объект с автоматическим освобождением. Возможно, это так, но независимо от того, волнует это или нет, все, что вам важно, это то, что вы не вступаете во владение строкой, потому что имя метода не начинается с «alloc» или «new» или содержит «copy» и поэтому вы не несете ответственности за его освобождение.