디버그 변수가 true 인 경우에만 NSLog
을 실행하는 사용자 지정 NSLog()
메서드 DNSLog()
을 만들려고합니다. 내가 참고로이 사용한사용자 지정 NSLog 메서드 (가변)
Undefined symbols for architecture i386:
"_DZNSLog", referenced from:
-[RestaurantInfoViewController viewDidLoad] in RestaurantInfoViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
: http://www.cocoawithlove.com/2009/05/variable-argument-lists-in-cocoa.html
내가
-(void)DNSLog:(NSString *)formatString, ...
{
if(debug){
va_list args;
va_start(args, formatString);
NSLog([[NSString alloc] initWithFormat:formatString arguments:args]);
va_end(args);
}
}
하지만
DNSLog(@"Hello %d",x);
를 사용하여 호출하려고 내가 컴파일 오류가 나타납니다 잘못되어가는 ?
나는 고급 재료에 빠지기 전에 C를 배워야한다고 생각합니다. C 함수의 구문과 Objective-C 메서드를 구별 할 수없는 것 같습니다 ... –
또한 코드는 문자열 공격/오류의 형식에 취약합니다. 대신에'NSLogv (formatString, args);'를 사용해야한다. –