Nsnumber超出范围问题

时间:2011-01-14 14:59:15

标签: iphone objective-c nsnumber

我正在尝试 NSNumber *百分比来获取整数值百分比,但它一直使超出范围。 Nslog 日志是这样的:

  

整数num的值是4

     

整数num的值是NsNumber   78910432

我的代码是:

  

在我的标题文件中:

int percentint;  
NSNumber *percent;
@property(nonatomic,retain) NSNumber *percent; //tried without using this too
  

在我的.m文件中:

@synthesize percent; //tried without using this too

percentint=4;

NSLog(@"The value of integer num is %i", percentint);

percent= [NSNumber numberWithInt:percentint];

percent= [[NSNumber alloc] initWithInt:percentint]; //tried without using this too. 

[percent autorelease]; //tried without using this too.

NSLog(@"The value of integer num is with NsNumber %i", percent);

3 个答案:

答案 0 :(得分:4)

尝试:

percentint=4;
NSLog(@"The value of integer num is %i", percentint);
self.percent= [NSNumber numberWithInt:percentint];
NSLog(@"The value of integer num is in array %@", self.percent);
NSLog(@"The value of integer num is in array %d", [self.percent intValue]);

离开@synthesize百分比;英寸

答案 1 :(得分:2)

用户@Felz是正确的。要获取NSNumber,您必须使用方法调用来检索它:

int percentInt = 95;
NSNumber *percent = [NSNumber numberWithInt:percentInt];
int myint = [percent intValue];

您所做的是打印出percent

的指针地址
NSLog(@"Percent Value: %d",[percent intValue]);
NSLog(@"Percent Address: 0x%X",percent);

请记住,NSNumber *percent表示百分比是指针而不是值。

答案 2 :(得分:2)

与其他用户暗示,NSNumber不是整数,因为您试图在最后一个NSLog中调用它。要从NSNumber中获取int值,请使用[percent intValue]

另一方面说明:您不需要两次初始化百分比。第一个调用numberWithInt:就像执行alloc / init / release。

此外,在完成之前永远不要释放对象。