¿Cuál es la diferencia entre cerrar la ruta bezier usando la función closePath y cerrarla manualmente?

Estoy tratando de hacer un rectángulo usandoUIBezierPath. Adopté dos formas diferentes de dibujarlo. Además, aumenté el ancho del trazo a 25 px.

Primer método: usar closePath

UIBezierPath *bpath = [UIBezierPath bezierPath];

[bpath moveToPoint:CGPointMake(x, y)];
[bpath addLineToPoint:CGPointMake(x + w, y)];
[bpath addLineToPoint:CGPointMake(x + w, y + h)];
[bpath addLineToPoint:CGPointMake(x, y + h)];
[bpath closePath];

Salida:

Segundo método: cerrar la ruta manualmente

UIBezierPath *bpath = [UIBezierPath bezierPath];

[bpath moveToPoint:CGPointMake(x, y)];
[bpath addLineToPoint:CGPointMake(x + w, y)];
[bpath addLineToPoint:CGPointMake(x + w, y + h)];
[bpath addLineToPoint:CGPointMake(x, y + h)];
[bpath addLineToPoint:CGPointMake(x, y)];

Salida:

En la documentación paraclosePath diceThis method closes the current subpath by creating a line segment between the first and last points in the subpath. This method subsequently updates the current point to the end of the newly created line segment, which is also the first point in the now closed subpath.

Y en el segundo método estoy creando el segmento de línea entre el primer y el último punto. Entonces, ¿por qué en el segundo método el rectángulo no se traza completamente?

Nota: La diferencia entre estos métodos solo es visible cuando el ancho del trazo aumenta significativamente.