¿Cómo lidiar con cadenas amortiguadas de C en Swift?

Estoy trabajando con el analizador sax de libxml2 para leer grandes archivos xml. La mayoría de los manejadores de devolución de llamada reciben un puntero de caracteres terminado en NULL. UtilizandoString.fromCString estos se pueden convertir en una cadena normal en Swift. Sin embargo, sax utiliza un búfer para leer los bytes, por lo que una de las devoluciones de llamada (characters) podría llamarse con parte de una cadena, es decir, el tamaño del búfer. Esta cadena parcial incluso podría comenzar / finalizar a mitad de un punto de código Unicode. La devolución de llamada se llamará varias veces, hasta que se proporcione la cadena completa (en fragmentos).

Estoy pensando en concatenar todos los fragmentos hasta que se pueda ensamblar la cadena completa, o detectar de alguna manera los límites del punto de código en las cadenas parciales, solo procesar el proceso completo hasta el punto de código no válido.

¿Cuál sería la mejor manera de manejar tales circunstancias? El procesamiento debe ser lo más rápido posible, mientras sea correcto. El uso de la memoria debe ser mínimo, pero no a costa del rendimiento.

Respuestas a la pregunta(2)

Su respuesta a la pregunta