Ciao a tutti
Ho guardato un po in giro e per ora sono arrivato qui:
L' Objective-C fornisce tre sistemi per la gestione della memoria:
-
MMR ovvero Manual Retain Release in cui la gestione della memoria è manuale, la classe NSObject (base di tutti gli oggetto del framework Foundation) fornisce un meccanismo di 'Reference Counting' per aiutarti in questo compito.
-
ARC ovvero Automatic Reference Counting, ovvero viene usato l' MMR ma in maniera automatica da parte del compilatore. Questo sistema è fortemente raccomandato. Quando si crea un nuovo progetto in XCode viene proposto di attivare l' ARC.
-
Garbage Collection è disponibile su OSX e su iOS ma solo a partire dalla versione 5. È un meccanismo diverso da quello dell' ARC ma gli effetti sono gli stessi, il rilascio della memoria è automatico.
toti81 ha scritto:
dalla poca esperienza che ho sembra che cmq tutta la parte di codice che andiamo a scrivere si trova dentro questo autoreleasepool che, correggetemi anzi aiutatemi, libera tutto.
L' AutoreleasePool ha a che fare con l' ARC (non è quindi garbage collection e và anche con gli iOS vecchi).
Quando viene abilitato l' ARC (l' abilitazione è di default quando si crea il progetto) nel codice compaiono dei riferimenti all' AutoreleasePool.
Ovviamnete non mi è tutto chiaro (è un modo come un altro per dire che non ho ancora capito un tubo), adesso cerco di fare qualche esempio. Al momento mi sono fatto l' idea che MMR è superata e Garbage Collection è prematura visto che ciò che viene abilitato di default è ARC.
Questo link può essere utile:
http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/MemoryMgmt.html