2010-10-28 7 views
5

Estoy creando una aplicación iOS que lee en un archivo de texto y muestra los contenidos en un campo UIText.stringWithContentsOfFile e initWithContentsOfFile return null después de varias ejecuciones

Para las primeras tres tiradas consecutivas de la aplicación (Reiniciando una nueva sesión sin salir), los datos se leen en perfecto estado. Sin embargo, en el cuarto intento, los datos devueltos del archivo son nulos.

He verificado la integridad del archivo. El problema existe cuando se utiliza stringWithContentsOfFile o initWithContentsOfFile.

Después de muchas horas de resolución de problemas, creo que el problema está de alguna manera relacionado con la eliminación de un búfer dentro de los métodos mencionados anteriormente.

Cualquier idea sobre este tema es muy apreciada. He intentado muchas cosas sin suerte.

Aquí está el código que utilizo para leer en el archivo:

TheString = [NSString stringWithContentsOfFile:[[NSBundle mainBundle]  
pathForResource:@"My_TextFile" ofType:@"txt"] encoding:NSUTF8StringEncoding error:NULL]; 

Aquí está el código que utilizo para mostrar ciertos contenidos del archivo (Los contenidos se colocan en una matriz de tipo NSArray):

NSArray *My_Array; 

My_Array= [TheString componentsSeparatedByString:@"\n"]; 

/* Obtain specific data to display */ 
    DisplayedData = [My_Array objectAtIndex:M[l]-1]; 
: 
: 
/* Display the data in the view */ 
    MyUITextView.text = DisplayedData; 

/* Log the data */ 
    NSLog(@"%@", MyUITextView.text); 

en la cuarta invocación del código anterior, los datos devueltos están en blanco y los nulos NSLog está volviendo

Muchas gracias por cualquier ayuda!

Respuesta

5

Quizás estoy un poco tarde con la respuesta, pero, de todos modos, tal vez alguien lo encuentre útil. OK, también he pasado un día tratando de descubrir por qué mi clase personalizada para vista desplazable funciona 3 veces y me niego a la 4ª vez ... Descubrí que el problema tiene los mismos atributos que el tuyo: NSString anidado objetos inesperadamente desaparecen. Aunque los punteros apuntan a la misma dirección en la memoria, la memoria ya está llena de objetos bastante arbitrarios en lugar de mi NSString s. Y me prestó atención que creé estas NSString s utilizando el método de la clase siguiente:

+ (id)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error 

Por lo tanto, no soy el propietario de estos NSString s. y supuse que ser el propietario puede ser una solución, por lo que he creado mi NSString s a través alloc y

- (id)initWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error 

método de instancia.

¡La aplicación fue reparada!

Cuestiones relacionadas