1

我很难理解为什么在某些教程中两次声明以下文本字段。

在 .h 文件中:

# include <UIKit/UIKit.h>

@interface MyViewController : UIViewController {

    UITextField *name;  // <----- What do I need this for? Is it the same as below?
}

@property (nonatomic, strong) IBOutlet UITextField *name;  // <----- Same as this?

@end

起初我以为这就像一个实例变量,但它们只在 .m 文件中声明,对吧?

.m 文件

#import "MyViewController.h"

@implementation UIViewController {

    NSString *myString; // <----- This is an instance variable, right?

}

什么是“UITextField *name;” 为了?我不只需要前面有@property 的第二个吗?谢谢你。

4

2 回答 2

1

如果您的目标是 iPhone OS 或 64 位 Mac OS X,那么您不需要为您的属性定义 ivars。看看Dynamic ivars:解决一个脆弱的基类问题

于 2012-12-11T08:48:12.043 回答
1

这是一种老方法,只要使用属性就可以了。如果两者都声明,则必须使用@synthesize 名称;在您的 .m 文件中使 self.name 与名称相同。XCode4.2 自动合成名称 = _name。所以在你的 .m 文件中尽可能使用 self.name 。

当您不想实现 setter 和 getter 时,{} 中的变量仅用于内部或私有。

于 2012-12-11T08:55:15.520 回答