我最近开始研究基本的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
答案 0 :(得分:2)
因为您没有使用@synthesize
为属性定义支持变量,它将隐式添加为_<propertyname>
所以要么将该属性用作self.displaytext
,要么直接通过_displaytext
由于Apple将默认编译器从GCC切换到llvm,因此Objective-C的发展速度非常快。 WWDC视频是跟踪这些改进的好方法