【发布时间】:2012-01-14 12:34:22
【问题描述】:
这是一个计算器。我有一个显示器,我可以在其中放置数字和变量(x、y 等)。当我按下 Enter 按钮时,它会将显示的内容发送到包含所有操作数的数组。
因为显示可以是 NSString(变量)或 NSNumber(数字),我认为使用“id”作为方法参数。
- (IBAction)enterPressed
{
[self.brain pushOperand:self.display.text];
}
/////////////////////
- (void) pushOperand:(id)operand
{
////// So if operand is digit I need to transform it into NSNumber.
NSNumber *digitToStack = [NSNumber numberWithDouble:operand];
/////// Here is problem - "Sending '___strong id' to parameter of incompatible type 'double'
NSNumber *digitToStack = [operand doubleValue];
//////// If i do like this, i have warning - "Initializing 'NSNumber *__strong' with an expression of incompatible type 'double'
[self.programStack addObject:operand];
}
我不明白这些警告的含义。
所以问题是我可以使用 id 方法以某种方式放入 Array NSNumber 和 NSString,或者我应该怎么做?
我可以将“id”方法中的参数“转换”为 NSNumber 吗?
【问题讨论】:
标签: iphone ios5 nsstring nsnumber