CFStringRef y NSString

CFStringRef a = CFSTR(" a ");

NSString * b = @ " b

1.CFSTR es una macro. La definición de esta macro puede ser cfstringmakeconstant o _ _ buit en _ _ cfstringmakeconststring. Si es cfstringmakeconststring, observe la implementación de cfstringmakeconststring y comprenderá que CFSTR("a") está almacenado en un diccionario global. La próxima vez que use CFSTR("a"), consulte el diccionario primero. Si existe, asigne otro valor y colóquelo en el diccionario. Entonces hay dos puntos a tener en cuenta: 1 y el objeto de cadena asignado por CFSTR no se puede liberar por sí solo la próxima vez. Utilizará un objeto salvaje

.

2, el subproceso múltiple puede ser problemático porque el diccionario global está desbloqueado.

En segundo lugar, @ de NSString es algo diferente y debería ser similar a _ _ incorporado _ _ cfstringmakecontent que la cadena le permite usar. en varios subprocesos sin liberarlo usted mismo. Se puede entender que B es un objeto de liberación automática y el sistema recuperará B automáticamente. Si desea mantener B durante mucho tiempo, déjelo, pero no lo olvide. lanzamiento

Tercero, conversión mutua

CFStringRef cadena ACF =(CFStringRef)ans cadena;

ns cadena * ans cadena =( ns cadena *)ACF cadena. ;