我是否需要在ARC下发布CGColorSpaceRef?

时间:2012-06-24 16:09:19

标签: ios core-graphics automatic-ref-counting

假设我有这段代码:

CGColorSpaceRef colorSpaceRGB = CGColorSpaceCreateDeviceRGB();

CGContextSetStrokeColorSpace(context, colorSpaceRGB);
CGContextSetFillColorSpace(context, colorSpaceRGB);

之后我做了一些绘画。当我完成后 如果我使用ARC,是否需要手动释放colorSpaceRGB?像这样:

CGColorSpaceRelease(colorSpaceRGB);

或者我不需要做任何事情?

谢谢:)

3 个答案:

答案 0 :(得分:11)

是。根据Apple的文档:因为CGColorSpaceRelease函数相当于CFRelease,但如果cs参数为NULL则不会导致错误。 如果您创建,复制或显式保留Core Foundation对象,则您有责任在不再需要时释放它(请参阅Core Foundation内存管理编程指南)。

答案 1 :(得分:5)

Swift 4.0的更新:

当前版本的Swift不再需要它。

<?php
$a = array(10,9,8,7,6,5,4,3,2,1);
$num = sizeof($a);

$comp = 0;
$swap = 0;

for ($i=0; $i < $num; $i++) { 
   echo "$a[$i] | ";
}
 echo "<br>";

for ($in=0; $in < $num; $in++) { 
      $min  = $in;
     for ($i=$in+1; $i < $num; $i++) { 
         if ($a[$i] < $a[$min]) {
           $min = $i;
         }
         $comp++;
     }
     if ($in != $min) {
       $past = $a[$min];
       $a[$min] = $a[$in];
       $a[$in] = $past;
       $swap++;
     }
}


for ($i=0; $i < $num; $i++) { 
   echo "$a[$i] | ";
}
echo "<br> comp : $comp , swap : $swap";


?>

这行代码现在提供以下消息:

&#39; CGColorSpaceRelease&#39;不可用:Core Foundation对象自动进行内存管理

答案 2 :(得分:3)

是的,我相信,即使在ARC下也是如此。

您需要根据文档CGColorSpace Documentation致电CGColorSpaceRelease