2016-03-31 91 views
-1

在我的學校我們收到任務做任何編程語言的項目,但是用自定義的數據結構和編程語言不能有垃圾收集器。建議使用C++。但是我有更好的Objective-C技能。所以我在我的Xcode項目中禁用了ARC,現在我應該在Java中創建像ArrayList這樣的自定義數據結構。我不能使用NSMutableArray或NSArray。有可能像使用C++一樣處理內存並創建自定義數據結構?項目沒有垃圾收集器osx

感謝您迴應

+1

ARC不是垃圾收集器。在Objective-C中,你可以使用'struct',也可以創建「自定義數據結構」,我認爲它只是自定義的「NSObject」,你想要什麼屬性? – Larme

+0

@Larme我知道ARC不是垃圾收集器,但如果我禁用ARC,我可以手動刪除對象。創建自定義結構struct或新的NSObject有什麼更好?我想要像Java中的ArrayList一樣的屬性 –

+0

@Larme - 引用計數**是**垃圾收集技術。參見例如[Wikipedia](https://en.wikipedia.org/wiki/Reference_counting),[這本書](http://www.brpreiss.com/books/opus5/html/page421.html),甚至[這微軟博客](https://blogs.msdn.microsoft.com/abhinaba/2009/01/27/back-to-basics-reference-counting-garbage-collection/)(這只是前三個谷歌命中我按順序)。 ARC是一個引用計數垃圾收集器,它取代了之前的標記掃描(不是100%肯定)。 – CRD

回答

1

你有兩個基本的選擇:

  1. 使用struct的爲您的數據結構和malloc/free(朋友)爲您的動態內存分配 - 就像你可能在C(++)中;或
  2. 您可以使用NSObject派生類和alloc/init/new/retain/release(朋友)爲您的動態內存管理。要做到這一點,你必須禁用ARC。

鑑於這是一個學校任務,您可能希望檢查第二個是可以接受的 - 即使您正在手動調用操作,您仍在使用Objective-C引用計數機器。你的教授可能認爲不可接受。

第一選擇是更基本的,您將完全負責所有關於何時不再需要內存的決定。事實上,您可以選擇實施自己的參考計數甚至標記掃描。

HTH