2011-08-31 2 views
3

Objective-C 라이브러리를 작성 중이며 간단한 플러그 식 로깅 메커니즘을 제공하여 라이브러리 사용자가 로깅을 켜고 끌 수 있도록하고 싶습니다. 나는 라이브러리 클래스에 블록 속성 될이 작업을 수행하는 흥미로운 방법으로 생각 :가변 개수의 인수를 사용하는 블록에 NSLog를 래핑 할 수 있습니까?

typedef void (^Logger)(NSString *fmt, ...); 
@property(copy) Logger logger; 
logger(@"Foo, %@.", self); 

을하지만 NSLog에 변수 인수 목록을 전달하는 방법을 모르는 :

const Logger SimpleLogger = ^(NSString *fmt, ...) { 
    // what goes in here? 
}; 

답변

5

아, 완전히 놓친 NSLogv :

const Logger SimpleLogger = ^(NSString *fmt, ...) { 
    va_list arglist; 
    va_start(arglist, fmt); 
    NSLogv(fmt, arglist); 
    va_end(arglist); 
}; 
관련 문제