Fuga y qué hacer al respecto -- ios campo con core-data campo con memory-leaks camp Relacionados El problema

Leak and What to Do About It


0
vote

problema

Español

Según los instrumentos, lo siguiente tiene una fuga y no entiendo por qué. ¿Alguien puede ayudar con esto? Cualquier ayuda apreciada. Gracias.

  - (User *) findUser:(NSString *)userName {     NSFetchRequest *userFetch = [NSFetchRequest fetchRequestWithEntityName:@"User"];     [userFetch setPredicate:[NSPredicate predicateWithFormat:@"userName = %@", userName]];     NSError *error = nil;     NSArray *fetchedUser = [[self context] executeFetchRequest:userFetch error:&error];      if (error)     {         NSLog(@"findUser Error: %@", error);         return nil;     }     else if ([fetchedUser count] < 1)     {         return nil;     }     else     {         if ([fetchedUser count] != 1)   // should always be zero or 1.         {             return nil;         }          User *user = (User *)[fetchedUser objectAtIndex:0];         return user;     } }   

La llamada ocurre aquí:

  - (void)tableView:(UITableView *)tv didSelectRowAtIndexPath:(NSIndexPath *)indexPath {     . . .     NSString *uName = ((User *)[currentUserList objectAtIndex:indexPath.row]).userName;    uManager.userObj = [svoDataHelper findUser:uName];    [detail didSelectUserWithName:[uManager userName]]; }   
Original en ingles

According to Instruments the following has a leak and I don't understand why. Can anyone assist with this? Any help appreciated. Thank you.

- (User *) findUser:(NSString *)userName {     NSFetchRequest *userFetch = [NSFetchRequest fetchRequestWithEntityName:@"User"];     [userFetch setPredicate:[NSPredicate predicateWithFormat:@"userName = %@", userName]];     NSError *error = nil;     NSArray *fetchedUser = [[self context] executeFetchRequest:userFetch error:&error];      if (error)     {         NSLog(@"findUser Error: %@", error);         return nil;     }     else if ([fetchedUser count] < 1)     {         return nil;     }     else     {         if ([fetchedUser count] != 1)   // should always be zero or 1.         {             return nil;         }          User *user = (User *)[fetchedUser objectAtIndex:0];         return user;     } } 

The call happens here:

- (void)tableView:(UITableView *)tv didSelectRowAtIndexPath:(NSIndexPath *)indexPath {     . . .     NSString *uName = ((User *)[currentUserList objectAtIndex:indexPath.row]).userName;    uManager.userObj = [svoDataHelper findUser:uName];    [detail didSelectUserWithName:[uManager userName]]; } 
        

Lista de respuestas

1
 
vote

Tu código es muy verboso. Intente esto justo después de la recuperación: (estoy usando result en lugar de fetchedUser ).

  return result.count == 1 ? result.firstObject : nil;   

Es probable que la fuga ocurra en otros lugares, lo más probable es que esté en sus clases opacas de datos de datos y administrador de datos. Una estrategia es tratar de hacer la recuperación en didSelectRowAtIndexPath y vea si aún tiene la fuga.

 

Your code is very verbose. Try this just after fetching: (I'm using result instead of fetchedUser).

return result.count == 1 ? result.firstObject : nil; 

The leak is likely happening elsewhere, most likely in your opaque data helper and data manager classes. One strategy is to try to do the fetch in didSelectRowAtIndexPath instead and see if you still get the leak.

 
 
 
 

Relacionados problema

9  Encontrar Boost :: Shared_PTR referencias cíclicas  ( Finding boostshared ptr cyclic references ) 
¿Hay algún consejo / trucos para encontrar referencias cíclicas de Shared_PTR's? Este es un exmaple de lo que estoy tratando de encontrar, desafortunadament...

176  Anatomía de una "fugas de memoria"  ( Anatomy of a memory leak ) 
En .NET Perspectiva: ¿Qué es una fugas de memoria ? ¿Cómo puede determinar si su aplicación se filtra? ¿Cuáles son los efectos? ¿Cómo puede prevenir u...

18  ¿El siguiente código causará la pérdida de memoria en C ++?  ( Will the below code cause memory leak in c ) 
class someclass {}; class base { int a; int *pint; someclass objsomeclass; someclass* psomeclass; public: base() { objsomecl...

3  ¿Cómo comprobar la fuga de la memoria?  ( How to check memory leak ) 
Es posible verificar la fuga de la memoria sin entrar en el código. Tengo la solicitud conmigo y quiero verificar si hay una pérdida de memoria o no. En mi ...

26  ¿Cómo puedo encontrar qué proceso tiene la memoria de fugas? [cerrado]  ( How do i find which process is leaking memory ) 
cerrado. Esta pregunta es off-topic . Actualmente no está aceptando respuestas. ¿Quieres ...

3  Error "No se pudo descubrir el 'Analizador CCC'" cuando se ejecuta en la construcción de escáner  ( Error couldnt discover the ccc analyzer when running scan build ) 
Estoy tratando de encontrar fugas en mi proyecto chibi-orm usando la herramienta de la construcción de escaneo como se sugiere en otros hilos. pero cuando...

0  PHP Posible fugas de memoria  ( Php possible memory leak ) 
Tengo un script que se bucea a través de una base de datos para que las imágenes se conviertan con GD & AMP; Imagick. i Desactive o reemplace todas las vari...

0  Asignación de varios sonidos  ( Allocation of several sounds ) 
No estoy seguro de si escribí bien este código (obtenga clicks en los botones táctiles rápidamente): Student8 ...

3  ¿Por qué se parece a mi "fuera de la caja" de SharePoint Navigation?  ( Why does my out of the box sharepoint navigation look like it is leaking memor ) 
Mi sitio tiene una estructura de navegación bastante profunda y, a menudo, parece que la navegación fuera de la navegación es la memoria de fugas, especialmen...

6  ¿No es la inicialización de objetos estándar en Objective-C? ¿Conlleva fugas de memoria?  ( Doesnt the standard object initialization in objective c lead to memory leaks ) 
La forma estándar de crear un objeto en Objective-C parece esto: MyClass* object = [[MyClass alloc] init]; La implementación estándar de MyClass 's '...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos