属性是否隐式创建该名称的类成员并键入?

时间:2012-02-13 19:30:23

标签: objective-c cocoa-touch cocoa

我在这里查看故事板教程: http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1

当我注意到作者创建了具有名称和类型的属性而没有在接口部分创建成员变量。 根据我之前的理解,目标C中的@ property / @ synthesize声明只为该名称和类型的成员变量创建了一个getter / setter。 我不认为变量是用@ property / @ synthesize隐式创建的。 是否隐式创建了类成员? 如果不是这个代码如何工作:

@interface Player : NSObject

@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *game;
@property (nonatomic, assign) int rating;

@end

1 个答案:

答案 0 :(得分:3)

是的,如果指定名称的ivar尚不存在,则使用@sythesize关键字隐式创建它。例如,鉴于上述特性:

@synthesize name; // Creates an instance variable called "name"

...替代地

@synthesize name = _name; // Creates an instance variable called "_name"

这意味着您不再需要在班级“@interface”中指定ivars。