Ответ 1
В техническом смысле, да, это быстрее, именно по этой причине.
В практическом смысле, нет, это не быстрее. Во-первых, разница в скорости крошечная. Мы говорим о миллисекундах, сохраненных в течение всего процесса.
Экономия может быть больше на iPhone, но она по-прежнему в значительной степени крошечная скорость, которую вы можете получить. Ваше время намного лучше потрачено на профилирование вашего приложения в "Инструменты" и переход туда, где он говорит вам, и гладить горячие точки в вашем собственном коде.
И что там, где Фонд становится быстрее: ваше время.
Код, который использует функцию автоопределения Foundation, когда это возможно, экономит много времени и головных болей, избегая легко предотвращаемых утечек памяти (а именно, забывая писать или не доходить до сообщений release
). CF не имеет авторекламы, поэтому вы должны помнить явно CFRelease
все, что вы создаете или копируете с ним, - и когда вы забудете или не достигнете этого кода (и я имею в виду, когда-я говорю по опыту), вы будете тратить гораздо больше времени на поиск утечки памяти. Статический анализатор помогает, но он никогда не сможет поймать все.
(Вы технически можете автообновлять объекты CF, но код для этого ужасно уродливый, и вы только опускаете свое уже минимальное увеличение скорости.)
Итак, придерживайтесь Foundation как можно больше. Не заходите за борт с авторефератом; даже в чистом Cocoa, еще есть моменты, когда явно освобождаются объекты (в основном, жесткие петли), и это удваивается для Cocoa Touch (поскольку iOS убьет ваше приложение, если вы выделите слишком много памяти, так что вы будете хотите как можно скорее выпустить большие объекты, такие как изображения). Но, как правило, автозапуск экономит вам гораздо больше времени, чем CF никогда не будет сохранять ваших пользователей.
Не связанная с временем причина состоит в том, что код Objective-C, с именами аргументов (из селектора сообщений), смешанными со значениями, намного легче читать, чем код на основе функций C. Это может не сделать вашу работу идти быстрее, но это, безусловно, делает ее более увлекательной.