来自* .h的@property不会显示在* .m中

时间:2013-12-11 22:21:18

标签: ios objective-c properties

我对应用程序编程非常感兴趣,因此我开始使用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中没有显示。你能帮助我吗? 最好的问候!

3 个答案:

答案 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。