2012-04-23 15 views
6

const char *をNSString *に変換しようとしています。それは動作しますが、私は得る:const char *をNSString *に変換し、変換する - _NSAutoreleaseNoPool()

__NSAutoreleaseNoPool(): Object 0x100550a40 of class NSCFArray autoreleased with no pool in place - just leaking 
__NSAutoreleaseNoPool(): Object 0x100551730 of class NSCFString autoreleased with no pool in place - just leaking 
__NSAutoreleaseNoPool(): Object 0x100551f10 of class NSCFData autoreleased with no pool in place - just leaking 

コードは次のとおりです。

const char* convert = "hello remove this: *"; 

NSString *input = [[NSString alloc] initWithUTF8String:convert];// convert 

//remove * FROM THE STRING   
NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"*"]; 

// REPLACE * WITH NOTHING     
input = [[input componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""]; 

// CONVERT BACK   
const char *converted_back = [input UTF8String]; 

私は失われたよ、私を助けてください。

+0

すべてのコードを表示すると、問題の内容を知っていると思いますが、コード全体を最初に確認する必要があります。 –

答えて

15

バックグラウンドスレッドで実行している場合は、NSAutoReleasePoolを追加します。

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
const char* convert = "hello remove this: *"; 
NSString *input = [[[NSString alloc] initWithUTF8String:convert] autorelease];// convert 
//remove * FROM THE STRING   
NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"*"]; 
// REPLACE * WITH NOTHING     
input = [[input componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""]; 
// CONVERT BACK   
const char *converted_back = [input UTF8String]; 
[pool drain]; 

はまた、あなたはそれで終わった後inputを解放する、またはそれを自動解放にする必要があります。

+0

私はヘッダーファイルでそれをやっていますし、NSApplicationDelegate souceの中にインクルード/インポートしています。私はこれを初めて使ったので、私に例を見せてもらえますか? – user1341993

+0

プログラム受信シグナル取得: "EXC_BAD_ACCESS"。 – user1341993

+0

@ user1341993 - 編集を参照してください – MByD

関連する問題