【发布时间】:2011-08-22 22:39:38
【问题描述】:
我正在尝试实现一个简单的计算器,我必须在其中更新 NSString 类型的变量中的当前操作(+、-、* 等)。当前操作作为参数接收到模型。
-(double)doOperation:(NSString *)operation withOperand:(double)operand
{
if (!currentOperation)
{
anOperand = operand;
}
currentOperation = operation; //Invalid Summary in currentOperation; but + in operation
}
这可能有什么问题?如果 NSString 不允许直接分配指针,那么替代方法是什么?
编辑
- 更准确地说,在 iO 中使用 = 号分配 NSString 是否合法?
- 如果没有,该怎么做。
注意:currentOperation 是Controller 类中的私有变量,而 operation 是方法的参数。
这是完整的代码
@interface CalculatorBrain : NSObject {
double anOperand;
NSString * currentOperaion;
}
- (double) doOperation: (NSString *) operation
withOperand: (double) operand;
@end
@implementation CalculatorBrain
- (double) doOperation: (NSString *) operation
withOperand: (double) operand
{
if (!currentOperaion)
{
anOperand = operand;
}
else if([currentOperaion isEqual: @"+"])
{
anOperand += operand;
}
else if([currentOperaion isEqual: @"-"])
{
anOperand -= operand;
}
else if([currentOperaion isEqual: @"*"])
{
anOperand *= operand;
}
else if([currentOperaion isEqual: @"/"])
{
anOperand /= operand;
}
currentOperaion = operation; //This is where the statement doesn't work as expected
if ([currentOperaion isEqual: @"="])
{
currentOperaion = nil;
}
return anOperand;
}
@end
【问题讨论】:
-
您必须更具体地了解“问题”是什么。除了明显的拼写错误之外,是否意味着存在编译时错误或运行时错误?该方法还应该返回一个
double,你没有这样做...... -
您的问题不明白。请详细说明您的问题。
-
请查看编辑后的问题描述。
-
用
=分配NSString 是完全合法的。 currentOperation 是如何声明的? -
要获得有用的答案,您应该发布实际显示问题的小样本。否则,这主要是猜测。
标签: objective-c ios