2013-01-02 58 views
-1

首先,我有一個calculatorBrain:一個簡單的計算器,Objective-C的

@interface calculatorBrain : NSObject { 
    NSString *theOperator; 
} 

@property (assign, nonatomic) NSString *theOperator; 

-(float)performOperation:(float)a andOperandB:(float)b; 
@end 

然後,在ViewController的函數,連接到button。 ViewController.m

@implementation ViewController 
@synthesize result, brain; 

-(IBAction)operatorPressed:(UIButton *)sender 
{ 
    if([sender.currentTitle isEqualToString:@"AC"]) { 
     result.text = @"0"; 
    } else if ([sender.currentTitle isEqualToString:@"."]) { 
     if (0 == [result.text rangeOfString:@"."].length) 
     result.text = [result.text stringByAppendingString:@"."]; 
    } else { 
     brain.theOperator = sender.currentTitle; 
     NSLog(@"%@", brain.theOperator); // return (null) 
    } 
} 

ViewController.h的

部分

@interface ViewController : UIViewController { 
    IBOutlet UILabel *result; 
    calculatorBrain *brain; 
} 

@property (assign, nonatomic) IBOutlet UILabel *result; 
@property (strong, nonatomic) calculatorBrain *brain; 

-(IBAction)digitPressed:(UIButton *)sender; 
-(IBAction)operatorPressed:(UIButton *)sender; 

@end 

的問題是,爲什麼我設置什麼,我按下了button後?謝謝!

+2

你有沒有alloc和初始化calculatorBrain即大腦的對象? – Rushi

+0

我不能使用sender.currentTitle,我alwasy使用'[發件人currentTitle]' –

+0

「sender.currentTitle是沒有NULL!」你確定嗎? Apple文檔指出,該屬性可能爲零。 –

回答

0

試試這個:

-(IBAction)operatorPressed:(UIButton *)sender 
    { 
     brain = [[calculatorBrain alloc] init] autorelease]; 
     if([sender.currentTitle isEqualToString:@"AC"]) 
     { 
      result.text = @"0"; 
     } 
     else if ([sender.currentTitle isEqualToString:@"."]) 
     { 
      if (0 == [result.text rangeOfString:@"."].length) 
       result.text = [result.text stringByAppendingString:@"."]; 
     } 
     else 
     { 
      brain.theOperator = sender.currentTitle; 
      NSLog(@"%@", brain.theOperator); // return (null) 
     } 
    } 
+0

@PlusA:如果您有多個電話。然後在viewWillAppear中只分配一次。它會工作。 – Rushi

+0

也許在 - (void)viewDidLoad中分配它? – PlusA

+0

@PlusA:是的,你可以做到這一點。 – Rushi

0

從您的代碼段,它看起來像您期望合成這個屬性。您可以在various tutorials on the web中閱讀更多關於此的信息。

確切的行爲將取決於所使用的OBJ - C的版本。我建議你閱讀上面的教程,以便更好地理解你的代碼。

+0

我猜如果他使用xcode4.4以上版本,它會自動合成。 –

+0

@ColinE我現在放了更多的代碼,我已經合成了calculatorBrain *腦。謝謝! – PlusA