ARC è un processo di generazione di codice in fase di compilazione che si riferisce al codice Objective-C. ARC significa fondamentalmente "inserire le istruzioni retain, release e autorelease nell'origine * al momento della compilazione, in modo che il programmatore non debba".
Di conseguenza, ARC non eseguirà alcunché sul codice C non oggettivo (ovvero le normali librerie C) e non ha un comportamento di runtime ** che potrebbe interferire con il comportamento di raccolta dei dati obsoleti del motore Haskell.
* Questo non è in realtà il modo in cui ARC funziona, genera codice di assembly ottimizzato, non codice sorgente, ma come analogia è una buona descrizione di come funziona.
** A rigor di termini, non è vero che non ha ARC comportamento di runtime, in quanto v'è la gestione puntatore debole che accade in fase di esecuzione, ma ancora una volta che si applica solo agli oggetti Objective-C e non farà nulla per il codice Haskell .
fonte
2012-03-06 18:28:18
Ho modificato la tua domanda per essere più specifico sul problema che sembra aver sollevato. Dovresti chiedere il tuo quarto punto (non correlato alla gestione della memoria) in una domanda separata. –
GHC Cross compila per ARM ora? : O – Phyx
ARC e la sua semantica target Objective-C in particolare. Rilascerà e conserverà per te con un'analisi statica che funziona solo per Objective-C. Questa gestione della memoria è chiamata raccolta dei dati inutili per il conteggio dei riferimenti, ma per qualche motivo Apple ha rifiutato di chiamarlo garbage collector. Quindi puoi vederlo come gestione manuale della memoria, tranne che è stato aggiunto dal compilatore. Quindi non dovrebbe influire su una libreria C AFAIK, poiché non usa la semantica Objective-C. – fisk