Pregunta

Tengo otro problema en el mismo código...Recibo este error:

método de inicialización -initWithCharactersNoCopy:length:freeWhenDone:no se puede enviar a un objeto abstracto de clase NSString_RegEx:¡Crea una instancia concreta!

Pero no entiendo el error ni que debo hacer...

editar:

NSString *pageContent = [[NSString alloc] initWithData:pageContents encoding:NSASCIIStringEncoding];
NSString_RegEx *pContent = [[NSString_RegEx alloc] initWithString: pageContent];
¿Fue útil?

Solución

Usted está viendo esto porque NSString es un conjunto de clases. docs ver que Apple aquí para una explicación general, y aquí para las notas específicamente en la subclasificación NSString. Básicamente, NSString es una clase abstracta sin método de almacenamiento de caracteres, y los diversos métodos -initWith ... todos los de retorno diferentes subclases concretas de NSString basado en el método de inicialización. Normalmente, cuando se está utilizando NSString, esto es completamente transparente. Sin embargo, si desea subclase NSString, usted tiene que poner en práctica al menos los métodos de bases (-Longitud, y -characterAtIndex :) además de los métodos de arranque que desea tener (además, obviamente, tienen una forma de almacenar los caracteres de la cadena ).

Si lo que desea es añadir funcionalidad a NSString, subclases no suele ser necesario. En primer lugar, debe comprobar si una categoría, o una función en un operativo NSString, o un método en una clase que contiene el NSString va a funcionar mejor. Por ejemplo, véase RegexKit o Google caja de herramientas para Mac , ambos de los cuales implementar el soporte de expresiones regulares usando una categoría en NSString.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top