2013-04-23 3 views
-2

У меня есть большой проект, и есть много звонков NSLog(). Когда что-то происходит, работает NSLog(), и я не знаю, какой из NSLog вызывать. Как я могу найти место, где NSLog() получить вызов в файле класса?Функция функции NSLog в проекте

Мой NSLog как это: NSLog(@"%@", someArray);

и вот лог:

2013-04-23 20:43:38.257 myProj[2101:707] { 
    id = 1; 
    version = 1; 
} 

Что myProj[2101:707] значит здесь? Дает ли он мне информацию о местонахождении функции NSLog в классе?

ответ

6

Вы можете попробовать выполнить поиск проекта.

Например, если выход

This is my output with values 3.1415 and 1.2345. 

пресс CMDсдвигF и искать «Это мой выход со значениями»

Вы также можете вставить заполнители в поиске термин:

enter image description here

+0

интересно узнать, как вставить шаблон в видоискатель .. может объяснить немного больше, чем .. был бы признателен, что .. – lakesh

+1

Нажмите на увеличительное стекло значок слева от текстового поля – DrummerB

+0

Спасибо, что узнал что-то новое ... – lakesh

0

Вы можете использовать the function class_getName, чтобы получить имя класса объекта, в котором размещен ваш оператор журнала, и включить имя класса в NSLog().

Как это:

#import <objc/runtime.h> 
… 
NSLog("%@ Some Log Statement", class_getName([self class])); 
+0

Это хороший момент для будущего, но я думаю, что ОП нелегко найти правильную инструкцию NSLog в первую очередь. – DrummerB

1

Преобразовать все ваше использование NSLog к DLOG, а затем операторы журнала напечатают:

  1. имя файла
  2. имя метода
  3. Линии номер

Каждая строка выводится в журнал. Таким образом, вы можете сразу увидеть, где выполняется все ведение журнала. DLog - гораздо лучший механизм ведения журнала, чем NSLog, и вы должны начать использовать его во всех своих проектах.

Определение DLOG в вас PCH файл как:

#ifdef DEBUG 
# define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); 
#else 
# define DLog(...) 
#endif 
+0

Помогает ли это ответить на вопрос? DLog можно определить как альтернативу NSLog, но это не помогает OP обнаружить, какой NSLog вызывается. – nsgulliver

+0

@nsgulliver Фактически, если OP заменил все NSLogs на DLogs, он найдет вызов, который ищет. – DrummerB

+0

@nsgulliver Я обновил ответ, чтобы сделать его более понятным, как DLog является хорошим решением. – Wain