我在model.h中有以下声明:
@interface Model: NSObject {
NSMutableArray *myMutableArray;
....
}
@property (nonatomic) double myDouble;
model.m中的相应@synthesize:
@synthesize myDouble;
然后我有以下的setter覆盖:
-(void) setMyDouble: (double) newDouble{
myDouble = newDouble;
[myMutableArray addObject:[NSNumber numberWithDouble:myDouble]];
}
在数组赋值后设置一个断点,调试器为myMutableArray显示以下内容:
myMutableArray =(_ NSArrayM *)0x631c450 1个对象
0 =(NSCFNumber *)0x631c6a0
所以,我的双子似乎没有正确进入阵列。我随后为NSStrings的数组赋值,在调试器中显示正常。 myDouble和newDouble的值都很好(通常只是一个整数)。
我已经阅读了几个关于为NSMutableArrays分配双精度的线程,并没有发现任何异常的东西。任何指导都将不胜感激。
更新
看起来代码是正确的,但我没理解调试器显示NSNumber的地址而不是它的值。谢谢大家的回复,非常感谢! :)
答案 0 :(得分:7)
您似乎对0
中的0 = (NSCFNumber *) 0x631c6a0
感到困惑。该0是数组中NSNumber的索引。如果从数组中检索对象并在NSLog中打印它,它将显示正确的值。你的代码似乎没有错。
答案 1 :(得分:1)
你忘了分配你的可变数组。调试你的应用程序,看看数组是否已分配。
修改强>
将您的功能名称更改为其他内容并查看其中的魔力。