码迷,mamicode.com
首页 > 其他好文 > 详细

[Stanford] RPN Calculator(controller)

时间:2014-10-03 14:03:24      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   os   ar   for   strong   sp   

CalculatorViewController.h

//iOS> Application > Single View Application 建立一个模板controller和空白View

#import <UIKit/UIKit.h>

@interface CalculatorViewController : UIViewController

@property (weak, nonatomic) IBOutlet UILabel *display;          //display------label的,view到controller的outlet

@end                              //为什么用weak指针?因为label在这个窗口上,这个父窗口View已经有个strong指针指向它了 ,

                                     //如果窗口没有strong指针指向它,那我也不需要label了,因为窗口都没了label也没了.

                                   //所以我只需要weak指针,我只需要它在View里,通常Outlet都是weak的

CalculatorViewController.m

#import "CalculatorViewController.h"

#import "CalculatorBrain.h"

@interface CalculatorViewController()

@property (nonatomic) BOOL userIsInTheMiddleOfEnteringANumber; //初始值是0,属于private

@property (nonatomic ,strong)CalculatorBrain *brain;

@end

 

@implementation CalculatorViewController

@synthesize display=_display;                                         //display------label的名字,view到controller的outlet,

@synthesize userIsInTheMiddleOfEnteringANumber=_userIsInTheMiddleOfEnteringANumber;

@synthesize brain=_brain;

-(CalculatorBrain *)brain

{

    if (!_brain) _brain=[[CalculatorBrain alloc]init];        //Lazy instantiation    

     return _brain;

}

- (IBAction)digitPressed:(UIButton *)sender                       //digitPressed------Round Rect Button的,target action。                                                                   //当按钮被按,view发消息给controller,消息附带参数,参数是发送者自己,这里就是按钮 {                                                                 //本函数作用-------按下按钮,label变化.  

     NSString *digit=sender.currentTitle;   //也是property所以可以也应该用.号(此处是复制了NSString还是给了个

                                                          //指针指向NSString?依这个property的声明而定,若property是strong的则是复制)   

  if(self.userIsInTheMiddleOfEnteringANumber)    

   {    

     self.display.text=[self.display.text stringByAppendingString:digit]; 

    }

    else  

   {

        self.display.text=digit;                    //property的getter方法可以用.号,获取值的方法是发getter到self的Label  

        self.userIsInTheMiddleOfEnteringANumber=1;    

    }

}

- (IBAction)OperationPressed:(UIButton *)sender

{    

        if(self.userIsInTheMiddleOfEnteringANumber)[self enterPressed]; //"6 enter 3 enter +"   VS   "6  enter 3 +"    

       double result=[self.brain performOperation:sender.currentTitle];    

       NSString *resultString=[NSString stringWithFormat:@"%g",result];    

       self.display.text=resultString;

}

- (IBAction)enterPressed    //把操作数入栈到model里,需要一个指向model的指针。所以几乎每个controller

  {                                            //都有这么一个private的property,strong的,而且还需要synthesize。

         [self.brain pushOperand:[self.display.text doubleValue]];   

          self.userIsInTheMiddleOfEnteringANumber=0;

    }

@end

 

[Stanford] RPN Calculator(controller)

标签:style   blog   color   io   os   ar   for   strong   sp   

原文地址:http://www.cnblogs.com/Xylophone/p/4004825.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!