您好我最近完成了关于目标c基础知识的教程。现在我正在“尝试”制作一个简单的应用程序。现在我似乎遇到了一些我似乎无法解决的最简单的问题,也许你可以告诉我我做错了什么。
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate>
@property (assign) IBOutlet NSWindow *window;
- (IBAction)saveData:(id)sender;
//Below is a simple IBOutlet which I try to retrieve data from when the IBAction saveData occurs
@property (weak) IBOutlet NSTextField *foodName;
@end
#import "AppDelegate.h"
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Insert code here to initialize your application
}
//Here is the saveData IBAction which should print out the value of the NSTextField if the user entered a value (if not returns null)
- (IBAction)saveData:(id)sender {
NSLog(@"%@", foodName.stringValue);
NSLog(@"Saved");
}
@end
我似乎遇到的问题是构建将失败,并在AppDelegate.m中的这一行给我一条错误消息:
NSLog(@"%@", foodName.stringValue);
错误信息是:使用未声明的标识符'foodName';你的意思是'_foodName'?
有人可以解释一下发生了什么以及如何克服这个问题?
答案 0 :(得分:0)
要地址 getter方法,请使用self.
:
NSLog(@"%@", self.foodName.stringValue);
另外,一个小问题:在@property
语句的开头将所有@interface
声明组合在一起,但是在任何实例变量声明之后:
@interface MyClass : NSObject {
NSString *_str1;
int _i1;
}
@property (weak) IBOutlet NSString *something;
@property (strong, readonly) NSNumber *somethingElse;
- (int)aMethod:(NSString *)string;
- (void)anotherMethod;
@end