Objective C计算器程序

时间:2014-05-14 09:49:11

标签: objective-c

.h文件

#import <UIKit/UIKit.h>

@interface calculatorViewController : UIViewController

@property (weak, nonatomic) IBOutlet UILabel *display;
@end

.m文件

#import "calculatorViewController.h"

@interface calculatorViewController ()

@end

@implementation calculatorViewController

@synthesize display=_display;
- (IBAction)digitPressed:(UIButton*)sender
{
    NSString *digit=[sender currentTitle];
    NSLog(@"digit pressed %@", digit);

    UILabel*myDisplay=self.display;
    //[self display] why not just type

    NSString *currentText= myDisplay.text;//[myDisplay text]; why are we not writing current title again?
    nsstring*newText=[currentText stringByAppendingString:digit];
    [myDisplay setText:newText];
你好! 我一直在努力学习Objective-C所以这些问题对你来说可能是愚蠢但对我来说很难,所以请不要投票我的问题因为我只是想像你一样学习。 :)

我在.m文件中有几个问题。

  1. (IBAction)digitPressed:(UIButton*)sender (UIButton *)是否意味着它是一种类型且sender同时是一个指针?我们不能删除支架吗?

  2. NSLog(@"digit pressed %@", digit);为什么这不适用于*digit。没有数字只存储地址而不是实际值吗?

  3. UILabel*myDisplay=self.display;我知道self.display是一个吸气剂但究竟是什么self我们什么时候使用它?

  4. NSString *currentText= myDisplay.text为什么我们在.text

  5. 中写currentTitle而不是NSString *digit=[sender currentTitle];
  6. 最后我读了很多但是听不懂。在一句话中,NSStringUILabel之间有什么区别?

2 个答案:

答案 0 :(得分:3)

  1. (UIButton *)sender表示发件人在方法的参数中传递,并且该发件人被转换为UIBUtton对象。

  2. 因为* digit是指向对象的指针,所以会打印对象的内存地址

  3. 如果您想通过getter访问变量,而不是直接访问实例变量,则使用它。

  4. 是一样的,只是一个约定,使用。访问属性和空间以访问方法。

  5. NSString表示一个字符串对象,如&#34; ABC&#34;,UILabel是一个将在屏幕上显示的视图,以及哪个文本是NSString。

  6. 我不会进入更多细节,因为SO不是教程页面。您可以在任何CocoaTouch编程书的第一章中找到所有这些答案。

答案 1 :(得分:1)

  1. (UIButton *)是UIButton对象的类型转换。如果您确定发件人是UIButton,则可以添加类型转换。这样,您就可以直接访问UIButton对象上的属性/方法
  2. 2。 据我所知,digit指的是字符串对象。 *数字表示第一个(位于索引0)。

    3。 自我意味着它自己的类,即calculatorViewController

    4。 text是UILabel组件的属性

    5。 您无法在显示器上显示需要UILabel组件的NSString。您可以将text属性设置为NSString对象并将其显示在屏幕上

    问候

    约翰