CFRelease против CGPathRelease - PullRequest
3 голосов
/ 15 марта 2011

Ниже приведен фрагмент кода из Omni frameworks :

CGMutablePathRef path = CGPathCreateMutable();
CGPathAddRect(path, NULL/*transform*/, rect);
self->_path = CGPathCreateCopy(path);
CFRelease(path);

Почему здесь используется CFRelease вместо CGPathRelease? Одинаковы ли они, и если да, то почему они существуют?

1 Ответ

4 голосов
/ 15 марта 2011

Из документации для CGPathRelease :

Эта функция эквивалентна CFRelease, кроме того, что это не вызвать ошибку, если параметр пути NULL.

В дополнение к тому, что для значений NULL не происходит сбой, вы также получаете немного безопасности типов во время компиляции, поскольку параметр имеет тип CGPathRef, а не CFTypeRef (что эквивалентно void *) .

...