Hello World Objective-C问题

时间:2013-07-15 21:32:21

标签: ios objective-c

我最近开始研究基本的IOS应用程序开发我在线使用以下教程https://www.youtube.com/watch?v=GHK3oREwVls&list=PLhAWmh1PlbzGrr8PGLvJBtJ7qniLVTQ9E,我似乎遇到了绊脚石,下面是我的两个视图控制器。我得到的错误是关于视图控制器M的displaytext.text部分。出现的错误是;

HelloCocoaViewController.m:30:4:使用未声明的标识符'displaytext';你是说'_displaytext'吗?

当我进行建议的更改时,我得到一个线程1:信号SIGABRT围绕下面的代码。

  @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([HelloCocoaAppDelegate class]));

以下是我目前正在使用的代码。

//
//  HelloCocoaViewController.h
//  Test
//

#import <UIKit/UIKit.h>

@interface HelloCocoaViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *displaytext;
- (IBAction)hellobutton:(id)sender;
- (IBAction)byebutton:(id)sender;

@end


//
//  HelloCocoaViewController.m
//  Test
//
//

#import "HelloCocoaViewController.h"

@interface HelloCocoaViewController ()

@end

@implementation HelloCocoaViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)hellobutton:(id)sender {
   displaytext.text=@"Hello";

}

- (IBAction)byebutton:(id)sender {
   displaytext.text=@"Bye";
}
@end

我将非常感谢所有人的帮助。

编辑:我现在已经尝试实施建议的解决方案(我希望这是正确的)但是我会遇到相同的SIGABRT问题。

@implementation HelloCocoaViewController
@synthesize displaytext;

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)hellobutton:(id)sender {
   self.displaytext.text=@"Hello";

}

- (IBAction)byebutton:(id)sender {
   self.displaytext.text=@"Bye";
}
@end

1 个答案:

答案 0 :(得分:2)

因为您没有使用@synthesize为属性定义支持变量,它将隐式添加为_<propertyname>

所以要么将该属性用作self.displaytext,要么直接通过_displaytext

访问该属性的支持变量

由于Apple将默认编译器从GCC切换到llvm,因此Objective-C的发展速度非常快。 WWDC视频是跟踪这些改进的好方法