Recortar un CAShapeLayer recuperando la ruta externa

Estoy tratando de recortar una capa con otra, pero, en lugar de crear una máscara (B) y recortar la capa (A) obteniendo una capa recortada A con la forma de B, quiero obtener una capa con la forma A y una ' agujero 'creado por el recorte con la capa B.

*************               ***Layer A***
*  Layer A  *               *************
*   *****   *               ****    *****
*   * B *   *      ->       ****    ***** Layer A without shape B
*   *****   *               ****    *****
*           *               *************
*************               *************

¿Cómo puedo obtener la capa recortada A?

Respuestas a la pregunta(2)

Su respuesta a la pregunta