I would follow RAC's `-firstOrDefault:success:error:` here:

```objc
typedef id (^MTLValueTransformationBlock)(id, BOOL *, NSError **);
```

Pointers to primitives are easier to reason about than pointers to objects.