@interface AClass : NSObject { BOOL isTrue; } @property (assign, readonly) BOOL isTrue;
与
@interface AClass : NSObject @property (assign, readonly) BOOL isTrue;
有什么区别?
解决方案
20
@interface Test : NSObject{
// BOOL isTrue; 这里也可以不写,不写的缺点是,某个子类继承了isTrue,会不能直接用_isTrue属性
}
@property (nonatomic,assign, readonly)BOOL isTrue;
@end
@implementation Test
//@synthesize isTrue=_isTrue;系统帮你做了这件事,所以你不用写
//@synthesize isTrue=_isTrue;假如你觉得前置_不可接受,想改成后置的,这里就得写一下
@end
@property等同于在.h文件中声明实例变量的get/set方法,@synthesize等同于在.m文件中实现实例变量的get/set方法。使用@property和synthesize创建存取器要比手动声明两个存取方法(getter和setter)更简单。而且我们在使用属性时可以使用点语法赋值或取值,语法更简单,更符合面向对象编程。
假如非多线程开发的话,建议加上nonatomic,效率更高点
// BOOL isTrue; 这里也可以不写,不写的缺点是,某个子类继承了isTrue,会不能直接用_isTrue属性
}
@property (nonatomic,assign, readonly)BOOL isTrue;
@end
@implementation Test
//@synthesize isTrue=_isTrue;系统帮你做了这件事,所以你不用写
//@synthesize isTrue=_isTrue;假如你觉得前置_不可接受,想改成后置的,这里就得写一下
@end
@property等同于在.h文件中声明实例变量的get/set方法,@synthesize等同于在.m文件中实现实例变量的get/set方法。使用@property和synthesize创建存取器要比手动声明两个存取方法(getter和setter)更简单。而且我们在使用属性时可以使用点语法赋值或取值,语法更简单,更符合面向对象编程。
假如非多线程开发的话,建议加上nonatomic,效率更高点