0

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

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

当我进行建议的更改时,我得到一个 Thread 1: signal 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
4

1 回答 1

2

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

所以要么使用属性 asself.displaytext或直接通过访问属性的支持变量_displaytext


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

于 2013-07-15T21:36:13.230 回答