Ah, gotcha. How about phrasing it like this, then:

> Block parameters should be named unless the block is initialized immediately.

This allows uses like:

```objc
void (^block)(NSString *) = ^(NSString *name) {
};
```

… where the purpose of the parameter is obvious from the literal, and doesn't need to be duplicated in the type.

> This actually brings up the point that I don't think you should ever omit an argument's name in a C function.

We try to limit our conventions to things that might be contentious or not obvious – i.e., our conventions always start with an implicit "Use common sense." I don't think I've ever seen C declarations without parameter names in reputable code. It shouldn't be necessary to say that it's a bad idea.