-1

В моей школе мы получили задание выполнить проект на любом языке программирования, но с пользовательской структурой данных и языком программирования не может быть сборщик мусора. Рекомендуется использовать C++. Но у меня есть лучшие навыки в объективе-с. Поэтому я отключил ARC в моем проекте Xcode, и теперь я должен создать собственную структуру данных, такую ​​как ArrayList в Java. Я не могу использовать NSMutableArray или NSArray. Возможно ли работать с памятью, как на C++, и создавать собственную структуру данных?Проект без сборщика мусора osx

Спасибо за ответ

+1

ARC не является сборщиком мусора. В Objective-C вы можете использовать 'struct', а также создать« пользовательскую структуру данных », которая, я думаю, является обычным« NSObject », с любыми свойствами, которые вы хотите? – Larme

+0

@ Larme Я знаю, что ARC не сборщик мусора, но если я отключу ARC, я могу удалить объекты вручную. Что лучше для создания пользовательской структуры 'struct' или нового' NSObject'? Я хочу, чтобы такие же свойства, как ArrayList в Java –

+0

@ Larme - подсчет ссылок ** - это метод сбора мусора. См. Например, [Википедия] (https://en.wikipedia.org/wiki/Reference_counting), [эта книга] (http://www.brpreiss.com/books/opus5/html/page421.html) и даже [этот блог Microsoft] (https://blogs.msdn.microsoft.com/abhinaba/2009/01/27/back-to-basics-reference-counting-garbage-collection/) (это только первые три хита Google. Я в порядке). ARC - это счетный сборщик мусора, который заменил предыдущую маркерную развертку (на 100% не уверен). – CRD

ответ

1

У вас есть два варианта на выбор:

  1. Используйте struct «s для структур данных и malloc/free (и друзей) для динамического выделения памяти - так же, как вы могли бы в C (++); или
  2. Вы можете использовать NSObject производные классы и alloc/init/newretain// release (и друзей) для управления динамической памятью. Для этого необходимо отключить ARC.

Учитывая, что это школьная задача, которую вы, возможно, захотите проверить, вторая приемлема - вы все еще используете механизм подсчета ссылок Objective-C, даже если вы вызываете операции вручную. Ваш профессор не может считать это приемлемым.

Первый выбор более простой, вы несете полную ответственность за все решения, когда память больше не требуется. Действительно, вы можете выбрать собственный счет ссылок или даже прокрутку.

HTH

Смежные вопросы