Convertir NSString a array char

const char arr[]="Hello There"; 

Estoy tratando de crear una matriz de caracteres como la anterior.

A continuación, se encuentra el código que uso. ¿Es esta una forma correcta de crear una matriz char.

 -(void) createCharArray:(NSString*) text{ char arr[text.length]; for(int i=0;i<text.length;i++){ arr[i]=[text characterAtIndex:i]; } } 

¿Tenemos que preocuparnos por la terminación nula? ¿Tenemos alguna otra forma de lograr lo mismo?

Puedes usar UTF8String . Por ejemplo: [myString UTF8String] .

No, esa no es la forma correcta en varios niveles. NSString admite unicode, que excede con mucho el número de caracteres posibles que cabrán en una matriz de bytes.

Debe usar una encoding como UTF8 si desea convertir unicode a caracteres de 8 bits.

Eche un vistazo al método getCString: maxLength: encoding :, e intente usar NSUTF8StringEncoding.

Ese método debería hacer lo que quiera hacer con una sola llamada.

Utilizar,

 NSString *str = @"Hello There"; const char *c = [str cStringUsingEncoding:NSUTF8StringEncoding];