Я нахожусь в Objective-C, пытаясь создать пользовательскую функцию ведения журнала Variadic, в частности, я хотел бы «перестроить» строковые форматы, например, то, что вы отправляете в NSLog. Я попытался понять функции Variadic, но язык, используемый для описания различных аспектов, находится над моей головой, и все примеры, которые я нашел, - это суммирование целой цепочки, а не перестроение строковых форматов.Создать пользовательскую функцию регистрации варидизации
Чрезмерно простой пример того, что я пытаюсь сделать будет выглядеть так:
(void) myLog (NSString*string,...) {
NSLog(string,...);
}
То есть я хочу привести типичный формат строки в функцию и восстановить этот формат в виде строки внутри функции.
Как я уже сказал, это слишком простой пример, будет больше, чем просто отправить его обратно, и, следовательно, есть другие причины для меня, желающих это сделать. Эти причины в стороне: как мне перестроить строковый формат внутри функции Variadic?
UPDATE:
В настоящее время я использую следующий код:
- (void) output:(NSString*)string {
[_outputStorage appendAttributedString:[[NSAttributedString alloc] initWithString:string attributes:[NSDictionary dictionaryWithObject:[NSFont boldSystemFontOfSize:[NSFont smallSystemFontSize]] forKey:NSFontAttributeName]]];
DDLogVerbose(@"%@", string);
}
...
[self output:[NSString stringWithFormat:@"You started out with %i tabs and I deleted %i (%i%%) of them.\n", totalTabs, deletedTabs, totalTabs ? 100*deletedTabs/totalTabs : 0]];
В настоящее время это работает, но вызов (последняя строка выше) достаточно непроницаемый. Я хотел бы, чтобы сделать вызов, как это:
myLog(@"You started out with %i tabs and I deleted %i (%i%%) of them.\n", totalTabs, deletedTabs, totalTabs ? 100*deletedTabs/totalTabs : 0]);
Технически говоря мой текущий код работает отлично, поэтому я хотел бы сделать это изменение, потому что второй путь SO гораздо более удобным для чтения! Строка, начинающаяся "MyLog (..." гораздо более удобным для чтения, чем "[само выходной: [NSString stringWithFormat: ..."
Что вы имеете в виду «восстановить» Можете ли вы показать некоторый ввод и вывод образца вы знаете о 'NSLogv()' –
Обновленных с небольшим количеством коды и более через объяснение –