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
| < Előző | Következő > |
|---|






