Утечки памяти для typedef struct - PullRequest
4 голосов
/ 13 июля 2011

Я пытаюсь устранить утечки памяти.Ниже приведен мой код.

currentTime = CFAbsoluteTimeGetCurrent();

CFTimeZoneRef currentTimeZone = CFTimeZoneCopyDefault();

todaysDate = CFAbsoluteTimeGetGregorianDate(currentTime, currentTimeZone);


[currentTimeZone release];
currentTimeZone = nil;

Предупреждение ::: / myclass.m: 87: предупреждение: недопустимый тип получателя 'CFTimeZoneRef'

как освободить память для typedef const struct?

Ответы [ 4 ]

6 голосов
/ 13 июля 2011

С CFxxxCopyxxx вы должны использовать CFRelease.

CFRelease(currentTimeZone);

Редактировать:

Есть CoreFoundation классы, которые БЕСПЛАТНЫЙ мост , и ваше первоначальное утверждение не было утечкой, а просто нуждалось в приведении.Я все еще рекомендовал бы использовать CFRelease, так как вы работали напрямую с CoreFoundation.

[(NSTimeZone*)currentTimeZone release];
0 голосов
/ 12 января 2012

попробуйте восстановить адресную книгу после всех людей

CFRelease (allPeople); CFRelease (Addressbook);

Это сработало для меня.

0 голосов
/ 13 июля 2011

Вы используете вызов CoreFoundation, поэтому вместо использования release Какао вы захотите позвонить:

CFRelease( currentTimeZone);

для освобождения скопированных данных.

0 голосов
/ 13 июля 2011

Из документов:

Если вы владеете объектом, вы обязаны отказаться владение (используя CFRelease), когда вы закончили с ним.

...