Well there's a reason why I used `%tu`, but it's probably a bad idea now that I'm re-evaluating it.

`NSUInteger` doesn't really have it's own format.  This is because `NSUInteger` is defined as:

* `unsigned int` (for 32 bit apps )
* `unsigned long` (for 64 bit apps)

In fact `%lu` shows warnings under 32 bits, and `%d` shows warnings in 64 bits (under Xcode 5.1.1).

On the other hand `%tu` for NSUInteger and `%zd` for NSInteger never throw warnings of any type.  This is because the types that these formatters represent (z = `size_t`, t = `ptrdiff_t`) happen to match the types of `NSUInteger` for both 32 and 64 bits (source: http://stackoverflow.com/questions/18893880/alternatives-to-type-casting-when-formatting-nsuinteger-on-32-and-64-bit-archi).

I think the best option would be to follow Apple's warning and make it:
`[request setValue:[NSString stringWithFormat:@"%lu", (unsigned long)[request_body length]] forHTTPHeaderField:@"Content-Length"];`