2016-03-31 20 views
-1

okulumda herhangi bir programlama dilinde proje yapma görevini aldık ancak özel veri yapısı ve programlama dili ile çöp toplayıcı olamaz. C++ kullanılması tavsiye edildi. Fakat objektif-c'de daha iyi becerilerim var. Bu yüzden Xcode projemde ARC'yi devre dışı bırakıyorum ve şimdi Java'da ArrayList gibi özel veri yapısı oluşturmalıyım. NSMutableArray veya NSArray kullanamıyorum. C++ gibi bellek ile çalışmak ve özel veri yapısı oluşturmak mümkün mü? Çöp toplayıcı olmadan proje osx

İki temel seçenek var

+1

ARC bir çöp toplayıcısı değildir. Objective-C, 'struct' kullanabilir ve ayrıca istediğiniz özelliğe sahip, sadece" NSObject "olduğunu düşündüğüm" özel veri yapısı "nı yaratabilirsiniz? – Larme

+0

@Larme ARC'nin çöp toplayıcı olmadığını biliyorum, ancak ARC'yi devre dışı bırakırsam nesneleri el ile silebilirim. Özel yapı 'struct' veya yeni 'NSObject' oluşturmak için daha iyi olan nedir? Java –

+0

@ Larme'de ArrayList gibi aynı özellikleri istiyorum - referans sayma ** ** bir çöp toplama tekniği. Bakınız örneğin [Wikipedia] (https://en.wikipedia.org/wiki/Reference_counting), [bu kitap] (http://www.brpreiss.com/books/opus5/html/page421.html) ve hatta [bu Microsoft blogu] (https://blogs.msdn.microsoft.com/abhinaba/2009/01/27/back-to-basics-reference-counting-garbage-collection/) (Bu sadece ilk üç Google isabeti sırayla aldım). ARC, bir önceki işaret süpürme (bunun üzerinde% 100 emin değil) yerini alan bir referans çöp toplama aracıdır. – CRD

cevap

1

yanıt için teşekkür ederiz:

  1. Kullanım struct 'ın veri yapıları için ve malloc/free (ve arkadaşları) dinamik bellek tahsisi için - sadece öldürürsün olarak C (++) içinde; ya
  2. Sen dinamik hafıza yönetimi için NSObject türetilmiş sınıfları ve alloc/init/new/retain/release (ve arkadaşları) kullanabilir. Bunu yapmak için ARC'yi devre dışı bırakmalısınız.

Bunun bir okul görevi olduğunu göz önünde bulundurduğunuzda, ikincisini kontrol etmek isteyebilirsiniz - işlemleri manuel olarak çağırıyor olsanız bile hala Objective-C referans sayım makinelerini kullanıyorsunuz demektir. Profesörünüz bunu kabul edemez.

İlk seçenek daha basittir, belleğin artık gerekli olmadığı tüm kararlardan tamamen siz sorumlusunuz. Gerçekten de kendi referans sayınızı veya hatta işaretlemelerinizi yapmayı seçebilirsiniz.

HTH