Ivar 是对象的各种实例变量,getter用于获取变量的值,setter用于写入变量的值。
@property 是"OC"的一个特性,主要用来封装对象中的数据,有着严格的命名规范,根据严格命名规范,创建自动创建出存取方法;编译器会自动生成一套存取方法, 可以说 @property = setter + getter;
@interface Person:NSObject
@property NSString *name;
@end
// 上面代码和下面等效
@interface Person:NSObject
- (NSString *)name;
-(void)setName:(NSString *)name;
@end
@synthesize name = _name
默认使用了@synthesize ,默认给变量添加一个前缀。
如果使用了@dynamic ,则需要自己实现setter, getter方法,Runtime
时候不会生成setter,getter方法,在运行时如果调用 setter ,getter就会报 unrecognized selector sent to instance.