@property的本质是什么?ivar、getter、setter是如何生成并添加到这个类中的

1.@property的本质是什么

@property的本质 = ivar (实例变量) + getter (取方法) + setter (存方法)

“属性”(property)有两大概念:实例变量(ivar)、存取方法(getter + setter)

 2、ivar、 getter 、setter 是如何生成并添加到这个类中的

这是编译器自动合成的,通过@synthesize 关键字指定,若不指定,默认为@synthesize  propertyName = _propertyName;若手动实现了getter/setter 方法,则不会自动合成。

现在编译器已经默认为我们添加了@synthesize  propertyName = _propertyName;因此不再手动添加了,除非你真的要改变成员变量名字。

生成getter方法时,会判断当前属性名是否有“_”,比如声明属性为@property(nonatomic,copy)NSString *_name;那么所生成的成员变量名就会变成“_name”,如果我们要手动生成getter 方法,就要判断是否以“_”开头了。


你可能感兴趣的:(@property)