2015-12-08 5 views
12

Sto creando un'app che utilizza React Native in alcune parti, ma non tutte.Scarica/Rilascia/Rimuovi React Native View dal runtime

devo un'istanza di RCTRootView

Impostazione a nil e rimuoverlo dal superview non sembra per rilasciarlo.

CPU e RAM rimangono in alto, quindi sembra che l'app React esegua ancora sui thread.

Come posso fermarlo?

Grazie :)

+0

Ulteriori informazioni: [Bridge] deallocando memoria quando popping ViewController che contiene Reagire componente nativo # 1487 https://github.com/facebook/react-native/issues/1487 – Gaston

+0

Hai provato un autoReleasePool? – Gihan

risposta

3

Devi creare il proprio RTCBridge separatamente e rilasciarlo (= zero), non solo la vista.

+0

Mi sono imbattuto in questa risposta, ma sfortunatamente la mia memoria si sta ancora arrampicando ogni volta che creo il nuovo RCTRootView. Creo il mio RCTBridge e il mio RCTRootView con esso e lo inserisco in alcuni UIViewController. Quando UIViewController si allontana, perché dobbiamo impostare qualcosa su zero? Lo stack non andrebbe via? Non siamo nei giorni pre-ARC qui, cosa mi sto perdendo? – yura

3
RCTBridge * bridge 
[bridge invalidate]; 
bridge = nil; 

invalidate e nil cancella tutti i moduli da jsbundle e cancella le istanze RCTRootView dalla memoria. Il bridge di note è un oggetto di RCTBridge.

+0

Ho perso molto tempo su questo. Grazie! –