2012-08-07 29 views
-1

您好! 在我的計算器程序中不使用減法/乘法/除法方法,而是使用加法方法。不要工作減法/乘法/除法但功加入

添加方法:

-(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; 
} 

在該方法中 '運算' 變量用於: 「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: @""]; 
    } 
} 

爲什麼你認爲「運」垃圾收集?

如果你需要更多的代碼只是讓我知道。

+0

假設'op'是實例變量或屬性,它看起來像它會得到垃圾的價值,因爲你複製'opStr'到它在進行任何分配之前。如果你最終使用'op',結果將是隨機的。 – dasblinkenlight 2012-08-07 15:23:26

+0

你有沒有在你的各種'clickMinus','clickMultiply'和'clickDivide'(或者其他被調用的方法)方法中加入斷點或'NSLog'語句,以確保它們在界面構建器中正確連接? – Rob 2012-08-07 15:23:29

+3

當你說它不起作用,它什麼都不做,或者它做了什麼,但只是錯誤的東西?如果是後者,它在做什麼?準確地說,你看到了什麼行爲,你想看到什麼樣的行爲? – Rob 2012-08-07 15:25:00

回答

0

什麼是clickEqualsop?它應該是一個類伊娃嗎?如果是這樣,processOp是錯誤的,因爲它使用了一個名爲op的局部變量,因此永遠不會分配ivar。

你應該學會調試這類問題自己。這並不難。如果您在調試器中逐行執行代碼執行,並觀察您應該能夠發現這類問題時發生了什麼變化。