Нет, вы не можете автоматически выпустить его. Авто-релиз доступен только для объектов Objective-C. Итак, у вас есть 2 варианта:
- Освободите память самостоятельно, используя
free()
.
- Оберните объект
s
в NSData
, используя dataWithBytesNoCopy:length:
, который получит права на выделенные данные и освободит его, когда объект NSData
будет освобожден.
Вариант 2 будет выглядеть примерно так:
unz_s * s = unzOpen2(...);
NSData * boxedS = [NSData dataWithBytesNoCopy:s length:sizeof(unz_s)];
Затем, когда boxedS
будет уничтожен, он также освободит s
.