2010-10-28 12 views
5

Sto creando un'app per iOS che legge in un file di testo e visualizza i contenuti in un campo UIText.stringWithContentsOfFile e initWithContentsOfFile restituiscono null dopo diverse esecuzioni

Per le prime tre sessioni consecutive di te (riavvio di una nuova sessione senza uscire), i dati vengono letti correttamente. Tuttavia al quarto tentativo, i dati restituiti dal file sono tutti nulli.

Ho verificato l'integrità del file. Il problema si verifica quando si utilizza stringWithContentsOfFile o initWithContentsOfFile.

Dopo molte ore di risoluzione dei problemi, ritengo che il problema sia in qualche modo correlato a un buffer che viene eliminato nei metodi sopra menzionati.

Qualsiasi informazione relativa a questo problema è molto apprezzata. Ho provato molte cose senza fortuna.

Ecco il codice che uso per leggere nel file:

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

Ecco il codice che uso per visualizzare alcuni contenuti del file (I contenuti vengono inseriti in una matrice di 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); 

il 4 invocazione del codice di cui sopra, i dati restituiti è vuoto e NSLog sta tornando nulli

Grazie mille per tutto l'aiuto!

risposta

5

Forse sono un po 'in ritardo con la risposta, ma, comunque, forse qualcuno lo troverà utile. OK, ho trascorso anche un giorno a cercare di capire perché la mia classe personalizzata per la vista scorrevole funzioni 3 volte e rifiuta al 4 ° momento ... Ho scoperto che il problema ha gli stessi attributi del tuo: nSString annidato gli oggetti scompaiono inaspettatamente. Sebbene i puntatori puntino allo stesso indirizzo in memoria, la memoria è già piena di oggetti piuttosto arbitrari, invece i miei NSString s. E ho pagato l'attenzione che ho creato questi NSString s utilizzando il seguente metodo della classe:

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

Quindi, io non sono il proprietario di queste NSString s. E ho pensato che per essere il proprietario può essere una soluzione, così ho creato il mio NSString s attraverso alloc e

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

metodo di istanza.

L'app è stata riparata!

Problemi correlati