Tech, szoftvertervezés és programozás

Szoftverfejlesztés, Shaderprogramozás, DirectX

  • A betűméret növelése
  • Alapértelmezett betűméret
  • A betűméret csökkentése
Címlap

iOS5 - szemétgyűjtés helyett ARC?

E-mail Nyomtatás PDF
Olvasóink értékelése: / 0
ElégtelenKitűnő 

Az Objective-C fura szintaxisát csak a memóriakezelése übereli, komoly nehézségeket okozva azoknak, akik ismerkednek a nyelvvel.

Különösen azoknak nehéz megszokniuk, akik szemétgyűjtős világból érkeznek (Java, C#).

A kézi hajtányos memóriakezelés miatt számos kritika érte a nyelvet, és az Apple most javítani próbál a helyzeten: az iOS SDK 5-től bevezetésre kerül az ARC („Automatic Reference Counting”).

Sokan félreértik, de ez nem „garbage collection”! Csupán csak arról van szó, hogy a fordító beírja helyettünk a retain / release / autorelease utasításokat.

Az ARC egy compiler kapcsoló, amely szerencsére kikapcsolható ( lásd „Apple LLVM compiler 3.0” szekció), így továbbra is lehet klasszikus módon kódolni - pontosabban átírás nélkül is le lehet majd fordítani a korábbi app-okat.

A dolog szépséghibája ugyanis az, hogy ha az ARC be van kapcsolva, *minden egyes kézi retain / release hívásra hibát dob a fordító*!

Persze csábító lehet a dolog, különösen kezdők számára, azonban látszólag akadnak még gondok az automatikus memória-kezeléssel. Például az alacsonyabb szintű, C-és objektumokat továbbra is a megszokott CFRelease utasítással kell felszámolni, stb.

Továbbá el sem tudom képzelni, hogyan tudna olyan hatékonyan optimalizálni, mint a kézi hajtányos módszer, ahol te mondod meg, hol akarod elengedni az objektumot (legutóbb pl. az autorelease pool-ok teljes mellőzésével sikerült negyedére csökkentenem az egyik statikus lib-em memóriafogyasztását!).

 

Itt egy témába vágó, részletes cikk:

http://arstechnica.com/apple/reviews/2011/07/mac-os-x-10-7.ars/10#arc