当我使用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 :(得分:0)
NSLog本质上是printf的不同版本,允许使用Objective C,而printf无法处理Objective C材料。
如果你的printf方法不起作用,这可能就是问题所在。
答案 1 :(得分:0)
尝试-longValue
代替-integerValue
它应该隐式地投射它们,但你永远不知道......
答案 2 :(得分:-1)
首先从作为对象的NSNumber转换为NSInteger,然后可以使用printf语句输出到控制台,并且所有整数应该出现在一行上。
for(NSNumber *element in setA) { NSInteger num = [element intValue]; printf("%li", (long)num); }