Pregunta

He escrito un marco de Objective-C, que construye un cierto código HTML con NSMutableString que devuelve el valor como un NSString.

Me han declarado una NSString y NSMutableString en el archivo de interfaz gráfica .h:

NSString *_outputLanguage;        // Tests language output
NSMutableString *outputBuilder;
NSString *output;

Esta es una muestra del código de implementación marco .m (No es posible imprimir el código real, ya que es propietaria):

-(NSString*)doThis:(NSString*)aString num:(int)aNumber {
if ([outputBuilder length] != 0) {
    [outputBuilder setString:@""];
}
if ([_outputLanguage isEqualToString:@"html"]) {
    [outputBuilder appendString:@"Some Text..."];
    [outputBuilder appendString:aString];
    [outputBuilder appendString:[NSString stringWithFormat:@"%d", aNumber]];
}
else if ([_outputLanguage isEqualToString:@"xml"]) {
    [outputBuilder appendString:@"Etc..."];
}
else {
    [outputBuilder appendString:@""];
}
output = outputBuilder;
return output;
}

Cuando escribí un programa de texto, NSLog simplemente imprime "(null)". El código que he escrito no era:

TheClass *instance = [[TheClass alloc] init];
NSString *testString = [instance doThis:@"This String" num:20];
NSLog(@"%@", testString);
[instance release];

espero que esta información es suficiente!

¿Fue útil?

Solución

supongo que estás olvidando a alloc/init sus cadenas ...

Otros consejos

Asegúrese de que outputBuilder es válido. ¿A dónde se alloc/init'ing?

Su método doThis: no parece outputBuilder de inicialización. Así que si es un puntero nulo, no se hará nada a él.

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