Зачем стрелять себе в ногу, прежде чем вы даже начали ходить?
Вы говорите, что
пытаетесь понять, как это сделать в чистом Objective-C
но вы
не хотите полагаться на NS [Mutable] {Array, Set и т. Д.}
Кроме того, вы хотитеиспользовать ARC, или вы не хотите использовать ARC?Если вы придерживаетесь Objective-C, тогда переходите на ARC, если вы не хотите использовать коллекции Foundation, тогда вам, вероятно, лучше без ARC.
Мое предложение: используйте NS [Mutable] {Array, Set и т. Д.} И получите базовый алгоритм работы с ARC.Это должно быть вашей первой и единственной целью, все остальное - преждевременная оптимизация.Особенно, если ваша цель - «вернуться к программированию», а не писать самый быстрый анализатор и решатель Scrabble.Если позже вы обнаружите, что вам нужно оптимизировать, у вас есть некоторый рабочий код, который можно проанализировать на наличие узких мест, и при необходимости вы все равно сможете заменить коллекции Foundation.
Что касается других библиотек, не являющихся ARCсовместимость: вы можете довольно легко сделать их совместимыми, если будете следовать некоторым правилам, установленным ARC .То, стоит ли это, во многом зависит от размера сторонней кодовой базы.
В частности, приведение типа void * к id и наоборот требует привязки с помощью моста, поэтому вы должны написать:
void* pointer = (__bridge void*)myObjCObject;
Точно так же, если вы пометите все указатели в структурах C как __unsafe_unretained
, вы сможете использовать код C как есть.Еще лучше: если код C может быть собран как статическая библиотека, вы можете создать его с отключенным ARC, и вам нужно только исправить некоторые заголовочные файлы.