Ошибка с макросом target-c - PullRequest
0 голосов
/ 10 июля 2010

Я новичок в написании макросов в Xcode, и у меня возникла проблема с написанием собственной замены NSLog. Я использовал несколько примеров, но хочу немного их настроить, чтобы они больше походили на Log4.

Я пытаюсь написать второй макрос (или в идеале просто делегат первого), который принимает переменную уровня журнала, а также строку и аргументы для форматирования. Но каждый раз, когда я пытаюсь передать переменную (в данном случае l), я получаю ошибку SIGART NSArgumentException. Первый макрос работает отлично

#define MLog(s,...) \
[MLog logFile:__FILE__ lineNumber:__LINE__ \
format:(s),##__VA_ARGS__]

#define MLogWithLevel(l,s,...) \
[MLog logFile2:__FILE__ lineNumber:__LINE__ logLevel:l \
format:(s),##__VA_ARGS__]

Это моё определение метода

+(void)logFile:(char*)sourceFile 
        lineNumber:(int)lineNumber
        format:(NSString*)format, ...;

+(void)logFile2:(char*)sourceFile       
lineNumber:(int)lineNumber
        logLevel:(int)logLevel
        format:(NSString*)format, ...;

Исключения:

+ [MLog logFile2: lineNumber: logLevel :: format:]: нераспознанный селектор отправлен в класс 0x51600 2010-07-10 10: 49: 21.408 Celebspotter [34433: 207] *** Завершение приложения из-за необученного исключение NSInvalidArgumentException, причина: «+ [Mlog logFile2: LINENUMBER: LOGLEVEL :: Формат:]: нераспознанный селектор отправлен в класс 0x51600'

Мой журнал тестовых сообщений:

MLogWithLevel(0: @"log at level %i", 0);

Спасибо

1 Ответ

2 голосов
/ 10 июля 2010

Бросьте двоеточие, используйте запятую:

MLogWithLevel(0, @"log at level %i", 0);
// fix here:   ^ 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...