Только первый аргумент является форматом, поэтому вам нужно еще stringWithFormat:
, чтобы взять сгенерированную строку формата.Так что-то вроде:
bl.text = [NSString stringWithFormat:[NSString stringWithFormat:@"%@%@", @"%", @"d"], 9];
// ^ OR @"%%%@", @"%d" if only the 'd' is variable
Хотя это похоже на NSScanner или -[NSNumber stringValue]
или что-то более подходящее для такого рода задач.