Если вы используете управление памятью с подсчетом ссылок (не сборщик мусора), вы должны использовать [obj copyWithZone:zone]
. Кроме того, вы должны (при тех же обстоятельствах) использовать +allocWithZone:
вместо +alloc
для размещения копий. Это выделяет память для экземпляров в указанной зоне памяти (см. NSZone). Разработчики могут использовать отдельную зону, если они собираются выделить много объектов, которые больше не будут нужны примерно в одно и то же время. Затем можно восстановить всю зону за одну операцию с помощью NSRecylceZone
, что поможет предотвратить фрагментацию памяти. В общем, использование частной зоны не требуется (и, как правило, снижает производительность; профилируйте свой код!). Предполагая, что разработчик хочет получить копию в определенной зоне, я думаю, вы бы предположили, что ему нужны все связанные экземпляры в одной зоне.
Методы -copy
и +alloc
вызывают методы -copyWithZone:
и +allocWithZone:
соответственно, минуя зону по умолчанию.