2012-08-01 1 views
0

NSLog을 사용할 때 작동하지만, printf은 작동하지 않습니다. printf을 사용하려면 setA의 모든 요소가 한 줄로 표시되어야합니다.이 인쇄 방법이 작동하지 않는 이유는 무엇입니까?

#import <Foundation/Foundation.h> 

#define INTOBJ(v) [NSNumber numberWithInteger: v] 

@interface NSSet (Printing) 
-(void) print; 
@end 

@implementation NSSet (Printing) 
-(void) print { 
    for (NSNumber *element in self) 
     printf("%li", (long) [element integerValue]); 
} 

@end 

int main (int argc, char *argv[]) { 
    @autoreleasepool { 
     NSMutableSet *setA = [NSMutableSet setWithObjects:INTOBJ(3), INTOBJ(10), INTOBJ(1), INTOBJ(5), nil]; 

     [setA print]; 
    } 
    return 0; 
} 
+0

당신이 바로, 아이폰 OS에서 장치에서이 작업을 실행하려는 겠지? 시뮬레이터에서 실행하면'printf'도 잘 동작합니다. – dasblinkenlight

+1

무엇을하려고합니까? – Dustin

+0

문제뿐만 아니라 여기 ansered되었다 [http://stackoverflow.com/questions/8924831/iphone-debugging-real-device][1] [1] : HTTP ://stackoverflow.com/questions/8924831/iphone-debugging-real-device – user1567896

답변

0

NSLog는 Objective C 자료를 허용하는 printf와 본질적으로 다른 버전이며, printf는 Objective C 자료를 처리 할 수 ​​없습니다.

printf 메서드가 작동하지 않는 경우 이는 아마도 문제 일 수 있습니다. ...

+0

아니요. 그는 제대로 가치를 얻고 있습니다. –

0

는 암시를 던져해야하는 대신 -integerValue-longValue을 시도,하지만 당신은 모를 다음, 먼저 NSInteger에 객체 인의 NSNumber에서

-1

변환 할 수 있습니다 당신의 printf 문을 사용하여 콘솔에 출력 모든 정수는 한 줄에 표시되어야합니다.

for(NSNumber *element in setA) 
{ 
    NSInteger num = [element intValue]; 
    printf("%li", (long)num); 

} 
+0

OP가 이미이 작업을 수행하고 있으며 올바른 방법을 사용하여 'NSInteger': 'integerValue'를 얻습니다. 'intValue'는'int'를 리턴합니다. –