Cocoa API

Tarihi

Cocoa, 1980'lerde ve 1990'larda NeXT tarafından geliştirilen NextStep ve OpenStep programlama ortamlarından çeşitli yazılım çerçevelerinin (temel olarak App Kit ve Foundation Kit) soyuna devam ediyor.  Apple, Aralık 1996'da NeXT'yi satın aldı ve ardından OpenStep'in direkt halefi olacak Rhapsody işletim sistemi üzerinde çalışmaya başladı.  Blue Box adlı klasik Mac OS ve Macintosh işletim sistemleri uygulamaları için bir öykünme tabanına sahip olmalıydı. OpenStep kütüphanelerinin ve ikili desteğin tabanı Yellow Box olarak adlandırıldı.  Rhapsody Mac OS X'te gelişti ve Yellow Box Cocoa oldu.  Bu nedenle, Cocoa sınıfları NSString veya NSArray gibi NS harfleriyle başlar.  Bunlar, OpenStep çerçevesi, NeXTSTEP için orijinal tescilli terimi ifade eder.
OpenStep'in geliştirilmesine yönelik yapılan çalışmaların çoğu, Mac OS X'in geliştirilmesine uygulandı, Cocoa en görünür kısımdı.  Ancak, farklılıklar vardır. Örneğin, NeXTSTEP ve OpenStep, metin ve grafiklerin ekranda gösterilmesi için Ekran PostScript'i kullandı, ancak Cocoa Apple'ın Quartz'ına (Taşınabilir Belge Formatı (PDF) görüntüleme modelini kullanıyor) dayanıyor.  Cocoa ayrıca, NSURL ve WebKit HTML sınıfları ve diğerleri de dahil olmak üzere bir İnternet desteği seviyesine sahipken, OpenStep, NSFileHandle sınıfları ve Berkeley soketleri üzerinden yönetilen ağ bağlantıları için yalnızca temel desteğe sahipti.
Sonuçta ortaya çıkan yazılım çerçevesi, çaresizlik adına Cocoa adını aldı, çünkü ad zaten Apple tarafından tescilli idi. Bu ismin kullanılmasından önceki yıllar boyunca, Apple'ın Cocoa markası, çocuklar için multimedya proje tasarım uygulamasının adı olarak ortaya çıkmıştı. Uygulama başlangıçta KidSim adı altında Apple Advanced Technology Group'ta geliştirildi ve daha sonra yeniden adlandırıldı ve "Cocoa" olarak markalandı. Apple için Cocoa'yı geliştirmek için kiralanan Peter Jensen tarafından icat edilen isim, web sayfalarına gömülü olduğu için "Çocuklar için Java" yı çağrıştırmak için tasarlandı. Ticari marka ve dolayısıyla "Cocoa" adı, bu yazılım çerçevesi için yeni bir ticari marka tescil ettirilirken ortaya çıkabilecek gecikmeyi önlemek için yeniden kullanıldı.  Orijinal "Cocoa" programı, Steve Jobs'un Apple'a geri dönmesini izleyen rasyonelleştirmelerden birinde Apple'da durduruldu.  Daha sonra üçüncü bir tarafa lisanslandı ve 2011 itibariyle Stagecast Creator olarak pazarlandı.

Bellek yönetimi

Cocoa ortamının bir özelliği de dinamik olarak ayrılmış hafızayı yönetme tesisidir. CocoA'nın NSObject sınıfı, hem tedarikçinin hem de kullanıcının çoğu sınıfının türetildiği, bellek yönetimi için referans sayma şemasını uygular. NSObject kök sınıfından türetilen nesneler bir tutma ve bırakma iletisine yanıt verir ve bir tutma sayısını korur.  RetainCount adlı bir yöntem var, ancak isminin tersine, genellikle bir nesnenin tam alıkoyma sayısını döndürmez.  Genelde sistem düzeyinde amaçlar için kullanılır.
Tahsis veya kopya ile yaratılan yeni tahsis edilen bir nesnenin tutma sayısı vardır.  Bu nesneye bir tutma mesajı gönderilmesi, tutma sayısını artırırken, bırakma mesajı gönderildiğinde tutma sayısını azaltır.  Bir nesnenin tutma sayısı sıfıra ulaştığında, bir C ++ yıkıcısına benzer bir prosedürle serbest bırakılır.
Objective-C 2.0 ile başlayarak, Objective-C çalışma zamanı, artık Otomatik Referans Sayma (ARC) lehine eski ve kullanımdan kaldırılmış isteğe bağlı bir çöp toplayıcı uyguladı.  Bu modelde, çalışma zamanı "tutma" ve "bırakma" gibi Cocoa referans sayma işlemlerini çalışmaz hale getirdi.  Çöp toplayıcı, Objective-C 2.0'ın iOS uygulamasında mevcut değildir.  Objective-C'deki çöp toplama işlemi düşük öncelikli bir arka plan iş parçacığına dayanıyordu ve kullanıcı deneyimini duyarlı tutmak amacıyla Cocoa'nın kullanıcı etkinliklerini durdurabiliyordu.  Eski çöp toplayıcı Mac OS X sürüm 10.13'te hala kullanılabilir, ancak Apple tarafından sağlanan hiçbir uygulama bunu kullanmaz.
2011 yılında LLVM derleyicisi, Objective-C kaynak kodunun statik analizini yaparak ve gerektiğinde tutma ve bırakma mesajlarını yerleştirerek geleneksel çöp toplayıcının yerini alan Otomatik Referans Sayma (ARC) 'yı başlattı.