Automatic Reference Counting pada Objective-C

Saat mencoba Xcode 4.2 beta 7, saya melihat ada opsi Automatic Reference Counting saat membuat project baru untuk iOS.  Apa itu Automatic Reference Counting (ARC) ?  Penjelasannya secara lengkap dapat dilihat di situs LLVM.

Automatic Reference Counting implements automatic memory management for Objective-C objects and blocks, freeing the programmer from the need explicitly insert retains and releases. It does not provide a cycle collector; users must explicitly manage lifetime instead.

Sepertinya membuat program untuk iOS dengan Objective-C akan semakin mudah, karena memory management  adalah salah satu hal yang cukup merepotkan bagi yang belum terbiasa, apalagi yang terbiasa menggunakan Java.  Pada Java terdapat fitur Garbage Collector, di mana object-object yang sudah tidak digunakan atau tidak memiliki referensi akan dihapus secara otomatis.  Untuk Objective-C 2.0 memang terdapat fitur Garbage Collector (untuk desktop apps), sedangkan untuk iOS tidak ada fitur Garbage Collector.

Lalu apa bedanya ARC dengan Garbage Collector?  Jika membaca penjelasan pada situs LLVM tersebut, sepertinya ARC bekerja pada tahap kompilasi, di mana kompiler akan menyisipkan operasi management memory (seperti retain, release) pada bagian-bagian yang diperlukan.  Sedangkan Garbage Collector bekerja pada tahap runtime.  ARC di sini mirip seperti code assistant, yang pada saat kompilasi akan melengkapi code anda dengan bagian-bagian memory management.

Apakah kita masih perlu belajar memory management (reference counting)? Menurut saya masih perlu, untuk saat ini fitur ARC masih belum masuk ke release Xcode versi final, dan sepertinya hanya akan berjalan di iOS 5 saja.  Jadi untuk saat ini, apalagi jika anda mentargetkan aplikasi anda dijalankan di iOS 4, anda masih harus belajar memory management.  Lagipula pengetahuan akan memory management akan membuat anda menjadi programmer yang lebih baik🙂

Salah satu sumber referensi yang singkat dan jelas untuk Reference Counting dapat anda baca di sini.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s