【发布时间】:2012-08-04 15:27:43
【问题描述】:
你好! 在我的计算器程序中,不使用减法/乘法/除法方法,而是使用加法方法。
加法:
-(IBAction) clickPlus
{
[self processOp: '+'];
}
减法:
-(IBAction) clickMinus
{
[self processOp: '-'];
}
处理方法:
-(void) processOp: (char) theOp
{
NSString *opStr;
op = theOp;
switch (theOp) {
case '+':
opStr = @" + ";
break;
case '-':
opStr = @" – ";
break;
case '*':
opStr = @" * ";
break;
case '/':
opStr = @" ÷ ";
break;
}
[self storeFracPart];
firstOperand = NO;
isNumerator = YES;
[displayString appendString: opStr];
display.text = displayString;
}
在该方法中使用了“op”变量:“clickEquals”
-(IBAction) clickEquals
{
if ( firstOperand == NO )
{
[self storeFracPart];
[myCalculator performOperation: op];
[displayString appendString: @" = "];
[displayString appendString: [myCalculator.accumulator
convertToString]];
display.text = displayString;
currentNumber = 0;
isNumerator = YES;
firstOperand = YES;
[displayString setString: @""];
}
}
你认为'op'为什么会收集垃圾?
如果您需要更多代码,请告诉我。
【问题讨论】:
-
假设
op是一个实例变量或属性,它看起来会得到垃圾值,因为你在进行任何分配之前将opStr复制到其中。如果您稍后使用op,结果将是随机的。 -
您是否在各种
clickMinus、clickMultiply和clickDivide(或其他任何名称)方法中放置断点或NSLog语句,以确保它们正确连接在界面生成器中? -
当你说它不起作用时,它什么也没做,或者它做了什么,但只是做错了?如果是后者,它在做什么?究竟你看到了什么行为,你想看到什么行为?
-
在调试器中运行它。在
processOp:的第一行设置断点并单步执行。 -
我更新了我的问题。请检查一下。
标签: objective-c ios xcode ios5 ios-simulator