void doSomething(void) {
  CGImageRef image = CGImageCreate(......);
  
  // do something...
  
  if (some condition...)
    CGImageRelease(image);
    return;
  }
  
  try {
    CPlusPlusClass::aFunction()
  } catch (...) {
    CGImageRelease(image);
    return;
  }
  
  // use image...
  
  CGImageRelease(image);
}
Objective-C のオブジェクトなら最初に autorelease しておけばいいんですけどね(iOS でなければガベージコレクションも使えるし)。
そんなときは C++ のテンプレートで smart pointer 的なリファレンスのラッパーを書けば、ことあるごとに XXXXRelease(ref) しなくて済みます。
これで、こんなふうに書けるようになります。
#include "AutoRef.h"
void AutoRefRelease(CGImageRef ref) { CGImageRelease(ref); }
void doSomething(void) {
  AutoRef image = CGImageCreate(......);
  
  // do something...
  
  if (some condition...)
    return;
  }
  
  try {
    CPlusPlusClass::aFunction()
  } catch (...) {
    return;
  }
  
  // use image...
}
 Objective-C のコードで C++ のコード使う場合(Objective-C++)は、拡張子を .mm に変えるを忘れずに。
  
