Что мне нужно знать для управления памятью в Objective C ++?

Я работаю с аудио-библиотекой C ++ в приложении для iPhone. Есть ли какая-либо инфраструктура управления памятью Objective C / Cocoa, которую я могу использовать для своих объектов C ++, или мне нужно просто прочитать и изучить управление памятью C ++?


person morgancodes    schedule 11.03.2010    source источник
comment
Вы можете написать оболочки для классов C ++, которые выделяют и освобождают их в соответствующих методах Objective-C (init и dealloc), а затем получают доступ к библиотеке через эти оболочки, используя стандартные методы управления памятью Какао (даже автозапуск будет работать).   -  person Felixyz    schedule 12.03.2010
comment
Феликсиз: вы правы, но предполагает ли это понимание управления памятью в C ++? Например. что такое new и delete и объем переменных? Вы бы купили приложение у разработчика, который не понимает основных вопросов, таких как управление памятью? Вдобавок ко всему, если он разработчик objective-c, будет легко понять управление памятью в C ++, поскольку это подмножество функций, предоставляемых объективом-c.   -  person stefanB    schedule 12.03.2010


Ответы (1)


Вы можете найти моя последняя запись в блоге полезна, по крайней мере, в первой половине, поскольку я обсуждаю и сравниваю как управление памятью Objective-C, так и идиоматическое управление памятью C ++.

Резюме: большинство разработчиков C ++ используют умные указатели. .

С Objective-C ++ есть дополнительные вещи, о которых нужно беспокоиться - в частности, тот факт, что (по крайней мере, по умолчанию) типы значений C ++, хранимые как члены классов Objective-C, не имеют конструкторов или деструкторов, вызываемых автоматически для вас. Вы, конечно, можете называть их явно, но это некрасиво. Лично я стараюсь просто удерживать их с помощью навязчивых указателей (умных, с подсчетом ссылок, указателей, в которых счетчик ссылок хранится внутри самого объекта - во многом как указатели Obj-C - поэтому они хорошо подходят).

person philsquared    schedule 11.03.2010
comment
Не могу больше согласиться с вашим сообщением: я хочу сказать, что из-за умных указателей, которые стали возможными благодаря детерминированному уничтожению ... сборка мусора на самом деле не упускается в C ++. - person stefanB; 12.03.2010