2012-04-23 16 views
6

Estoy tratando de convertir const char * a NSString * y luego convertirlo de nuevo. Funciona, pero me sale:convertir const char * a NSString * y convertir de nuevo - _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 

El código es:

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]; 

estoy perdido, por favor me ayude a cabo.

+0

Muestre todo su código, creo que sé cuál es el problema pero primero necesito verificar todo el código. –

Respuesta

15

Si lo hace en una cadena de fondo, agregue una 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]; 

Además, es necesario para liberar input después de que haya terminado con él, o que sea autoreleased.

+0

lo estoy haciendo en un archivo de cabecera y luego lo incluyo/importo dentro de la fuente NSApplicationDelegate, ¿podría mostrarme un ejemplo, porque soy nuevo en esto ... – user1341993

+0

recibiendo la señal recibida del programa: "EXC_BAD_ACCESS". – user1341993

+0

@ user1341993 - ver edición – MByD