Как избавиться от даты и времени, которая появляется перед каждым оператором NSLog в консоли

Если Вы хотите не ввести имя класса дважды во время инстанцирования как в:

new SomeContainer<SomeType>(SomeType.class);

можно использовать метод фабрики:

<E> SomeContainer<E> createContainer(Class<E> class); 

Как в:

public class Container<E> {

    public static <E> Container<E> create(Class<E> c) {
        return new Container<E>(c);
    }

    Class<E> c;

    public Container(Class<E> c) {
        super();
        this.c = c;
    }

    public E createInstance()
            throws InstantiationException,
            IllegalAccessException {
        return c.newInstance();
    }

}
6
задан Abizern 2 October 2009 в 15:52
поделиться

4 ответа

Прочтите это:

Это проект Github под названием «QuietLog», первоначально с нашего сайта CocoaHeads, который объясняет, как создать функцию QuietLog , которая выполняет то, что вы описываете. Он также показывает, как обернуть QuietLog в макрос с именем LocationLog, чтобы он распечатал имя файла и номер строки, где у вас есть оператор журнала. Я использую его во всех своих проектах и ​​больше не теряю случайных операторов "NSLog".

12
ответ дан 8 December 2019 в 14:45
поделиться

Мне нравится использовать объекты Objective-C для форматирования строк и аргументов, поэтому я переписал NSLog () и добавил его в свои утилиты.


+ (void)myLog:(NSString *)formatString, ...
{
    va_list args;
    va_start(args, formatString);
    NSString* output = [[NSString alloc] initWithFormat:formatString arguments:args];
    fprintf(stderr, "%s\n", [output UTF8String]);
    [output release];
    va_end(args);
}
1
ответ дан 8 December 2019 в 14:45
поделиться

Have you tried CFShow()?

1
ответ дан 8 December 2019 в 14:45
поделиться

Вы можете напечатать кому: sdterr:

fprintf(stderr, "%s", "Your message");

Edit: Посмотрите эту реализацию Карла Крафт

0
ответ дан 8 December 2019 в 14:45
поделиться