.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文件中有几个问题。
(IBAction)digitPressed:(UIButton*)sender
(UIButton *)
是否意味着它是一种类型且sender
同时是一个指针?我们不能删除支架吗?
NSLog(@"digit pressed %@", digit);
为什么这不适用于*digit
。没有数字只存储地址而不是实际值吗?
UILabel*myDisplay=self.display;
我知道self.display
是一个吸气剂但究竟是什么self
我们什么时候使用它?
NSString *currentText= myDisplay.text
为什么我们在.text
currentTitle
而不是NSString *digit=[sender currentTitle];
?
最后我读了很多但是听不懂。在一句话中,NSString
和UILabel
之间有什么区别?
答案 0 :(得分:3)
(UIButton *)sender表示发件人在方法的参数中传递,并且该发件人被转换为UIBUtton对象。
因为* digit是指向对象的指针,所以会打印对象的内存地址
如果您想通过getter访问变量,而不是直接访问实例变量,则使用它。
是一样的,只是一个约定,使用。访问属性和空间以访问方法。
NSString表示一个字符串对象,如&#34; ABC&#34;,UILabel是一个将在屏幕上显示的视图,以及哪个文本是NSString。
我不会进入更多细节,因为SO不是教程页面。您可以在任何CocoaTouch编程书的第一章中找到所有这些答案。
答案 1 :(得分:1)
2。 据我所知,digit指的是字符串对象。 *数字表示第一个(位于索引0)。
3。 自我意味着它自己的类,即calculatorViewController
4。 text是UILabel组件的属性
5。 您无法在显示器上显示需要UILabel组件的NSString。您可以将text属性设置为NSString对象并将其显示在屏幕上
问候
约翰