The modern approach is much easier:
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
context.duration = 1;
view.animator.alphaValue = 0;
}
completionHandler:^{
view.hidden = YES;
view.alphaValue = 1;
}];
If the view hierarchy is layer-backed, it’s actually sufficient to do:
view.animator.hidden = YES;