Это для лучшей регистрации и только регистрации - на основе отличного метода множественных аргументов dicius. Я определяю класс Logger и называю его так:
[Logger log: @"foobar ", @" asdads ", theString, nil];
Почти хорошо, за исключением необходимости заканчивать аргументы var "nil", но я полагаю, что в Objective-C этого нет.
logger.h
@interface Logger : NSObject {
}
+ (void) log: (id) first, ...;
@end
Logger.m
@implementation Logger
+ (void) log: (id) first, ...
{
// TODO: make efficient; handle arguments other than strings
// thanks to @diciu /483518/yarlyki-v-objective-c-dlya-obedineniya-strok-nss
NSString * result = @"";
id eachArg;
va_list alist;
if(first)
{
result = [result stringByAppendingString:first];
va_start(alist, first);
while (eachArg = va_arg(alist, id))
{
result = [result stringByAppendingString:eachArg];
}
va_end(alist);
}
NSLog(@"%@", result);
}
@end
Чтобы получить только строки concat , я бы определил категорию для NSString и добавил к ней статический (+) метод конкатенации, который выглядит точно так же, как метод log выше, за исключением того, что он возвращает строку. Он находится на NSString, потому что это строковый метод, и он статический, потому что вы хотите создать новую строку из 1-N строк, а не вызывать ее ни для одной из строк, являющихся частью добавления.