2016-04-15 33 views
11

Attualmente sto affrontando un problema di memoria nella creazione di app iOS. Ho controllato le perdite di memoria usando gli strumenti. Ho scoperto che c'è un tipo di perdite che continua a mostrare nome swift_slowAlloc, di cui non ho idea. Di seguito è riportato un frammento dell'errore.App iOS: terminata a causa di un problema di memoria [relativo a swiftSlowAlloc o UIImage]

Memory Leaks

Un altro motivo penso che potrebbe accadere è a causa del carico di diversi UIImages nella mia app. Solo per fornire uno sfondo, prendo varie parti di un'immagine originale nella mia app e faccio un po 'di elaborazione su di loro. Tuttavia, non è necessario conservare le immagini per ulteriori calcoli. Ho usato autoreleasepool per rilasciare UIImage; ma dubito che funzioni. Di seguito è riportato un esempio:

@autoreleasepool { 

     UIImage *imageResized = MatToUIImage(resized28); 

     // MARK: Send resized28 to CNN and get the output. Fill the dict then 

     NSString *CNNScore; 
     CNNScore = [myclass CNNfloat:imageResized W1:W1 W2:W2 Wf1:Wf1 Wf2:Wf2 B1:B1 B2:B2 Bf1:Bf1 Bf2:Bf2]; 

     imageResized = nil; 
     xtn = [NSNumber numberWithInteger:xt]; 
     xbn = [NSNumber numberWithInteger:xb]; 
     ytn = [NSNumber numberWithInteger:yt]; 
     ybn = [NSNumber numberWithInteger:yb]; 

     symbol = [NSString stringWithFormat:@"%@", CNNScore]; 
     symtype = [NSString stringWithFormat:@"%@", [scoreDic objectForKey: symbol]]; 

     numberInDict = [NSString stringWithFormat:@"%i", n]; 


     inToMaroof = [NSArray arrayWithObjects: xtn, xbn, ytn, ybn, symbol,symtype, nil]; 

     [toMaroof setObject: inToMaroof 
        forKey: numberInDict]; 
     } 
    } 

Qualcuno può suggerire qualcosa su questo problema?

+0

Eventuali aggiornamenti con questo? Vediamo qualcosa di simile. La mia ipotesi è che iOS spenga le app che hanno fame di memoria in un breve periodo di tempo. –

risposta

0

Queste sono alcune possibili cause che possono causare una perdita di memoria nel programma, anche se si utilizza ARC:

  1. si imposta un riferimento forte per un genitore in un oggetto figlio. Ciò causa un ciclo di conservazione.
  2. Si imposta un riferimento forte a un delegato in un'interfaccia.
  3. Hai dimenticato di rilasciare un oggetto quando fai un ponte senza pedaggio dopo aver trasferito la proprietà.
  4. Si è dimenticato di impostare un riferimento debole agli oggetti passati in un blocco.