我对应用程序编程非常感兴趣,因此我开始使用Todd Moore的书为iphone编写应用程序。我想在他的书中重新创建第一个例子。 因此我需要在我的ViewController.m中的一些属性,我在ViewController.h中通过拖动功能“New Referencing Outlet”声明:
@property (retain, nonatomic) IBOutlet UILabel *label;
@property (retain, nonatomic) IBOutlet UITextField *antwort;
- (IBAction)antworte:(id)sender;
我的问题是ViewController.m中没有显示。你能帮助我吗? 最好的问候!
答案 0 :(得分:5)
它实际上不会出现在您的.m文件中,但您仍然可以从那里使用它们。 (如果这本书来自几年前,它可能会显示以前代码放在.m文件中的代码,但不再需要该代码。)
答案 1 :(得分:1)
在Foo.m
文件的顶部应该有以下行:#import "Foo.h"
这意味着在编译代码之前,Foo.h
的整个内容被复制/粘贴到Foo.m
。
因此,就编译器而言,@ property / IBAction / etc代码实际上位于Foo.m
文件中。
此外,本书可能是为较旧版本的Xcode设计的。在旧版本的Xcode中,事情表现得有点不同。如果本书谈到{。{1}}在* .m文件中,请忽略它。在旧版本的Objective-C语言中,这些日子通常不需要(有些时候你需要它,但它们很少见)。如果您遇到需要使用@synthesize label
修复的编译错误,请不要执行@synthesize
并在此处询问堆栈溢出。我们将告诉您该怎么做。
答案 2 :(得分:0)
您可以将属性称为实例属性:
self.label.text = @"hello";
self.antwort.text = @"bar";
或直接:
_label.text = @"hello";
_antwort.text = @"bar";
PS:假设你使用的是Xcode 5,你不必显式调用@syntesize。