Я новичок в написании макросов в 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);
Спасибо