Objective-C aligned plain-text table renderer

Objective-C
#import <Foundation/Foundation.h>

static NSString *RenderTable(NSArray<NSString *> *headers, NSArray<NSArray<NSString *> *> *rows) {
    NSMutableArray<NSNumber *> *widths = [NSMutableArray array];
    for (NSUInteger c = 0; c < headers.count; c++) {
        NSUInteger width = headers[c].length;
        for (NSArray<NSString *> *row in rows) width = MAX(width, row[c].length);
        [widths addObject:@(width)];
    }
    NSMutableString *out = [NSMutableString string];
    NSMutableArray *lines = [NSMutableArray arrayWithObject:headers];
    [lines addObjectsFromArray:rows];
    for (NSArray<NSString *> *cells in lines) {
        NSMutableArray *padded = [NSMutableArray array];
        for (NSUInteger c = 0; c < cells.count; c++) {
            [padded addObject:[cells[c] stringByPaddingToLength:widths[c].unsignedIntegerValue withString:@" " startingAtIndex:0]];
        }
        [out appendFormat:@"%@%c", [padded componentsJoinedByString:@" | "], 10];
    }
    return out;
}