.h实例变量声明

时间:2012-12-11 08:27:26

标签: objective-c xcode controller declaration

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

在.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 *名称;”对于?我不需要在前面使用@property的第二个吗?谢谢。

2 个答案:

答案 0 :(得分:1)

如果您的目标是iPhone OS或64位Mac OS X,则无需为属性定义ivars。看看Dynamic ivars: solving a fragile base class problem

答案 1 :(得分:1)

这是一种古老的方式,只需使用属性即可。 如果同时声明两者,则必须使用@synthesize名称;在.m文件中,使self.name与name相同。 XCode4.2自动合成name = _name。因此,请在.m文件中尽可能使用self.name。

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