Ответ 1
Зачем стрелять себе в ногу, прежде чем вы даже начнете ходить?
Вы говорите, что вы
пытается выяснить, как это сделать в чистом 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 и только исправить некоторые файлы заголовков.