先说IOS5以前代码:
#import "parentModel.h"
@interface subModel : parentModel
{
//声明一个实例变量
NSString *strA;
}
//声明一个strA属性 声明属性strA的set get方法
@property(strong, nonatomic)NSString *strA;
@end
@implementation subModel
//指定属性strA与实例变量strA对应 实现属性strA的set get方法
@synthesize strA;
@end
IOS5以后的代码:
@interface subModel : parentModel
/*
声明一个strA属性 并生成一个_strA实例变量 声明属性strA的set get方法
并在.m文件中实现属性strA的set get方法 指定属性strA与实例变量_strA对应
不再需要关键字@synthesize了
*/
@property(strong, nonatomic)NSString *strA;
@end
如果加上以下代码
@implementation subModel
//生成一个实例变量strA 指定属性strA与实例变量strA对应 实现属性strA的set get方法
@synthesize strA;
@end
@implementation subModel
//指定属性strA与实例变量_strA对应 实现属性strA的set get方法
@synthesize strA = _strA;
@end
如果想要重写set get方法 实现懒加载
@interface subModel : parentModel
//生成实例变量_strA 声明一个strA属性 声明属性strA的set get方法
@property(strong, nonatomic)NSString *strA;
@end
@implementation subModel
//指定属性strA与实例变量_strA对应 实现属性strA的set get方法
@synthesize strA = _strA;
- (void)setStrA:(NSString *)strA
{
//添加代码
_strA = strA;
}
- (NSString *)getStrA
{
//添加代码
return _strA;
}
@end
写点总结的东西
#import "parentModel.h"
@interface subModel : parentModel
@property(strong, nonatomic)NSString *strA;//写法一
@end
@interface parentModel ()
@property(strong, nonatomic)NSString *strB;//写法二
@end
@implementation subModel
{
//写法三
NSString *strC;
}
@synthesize strD = _strD;//写法四
@end
写法一:声明属性,方便外部文件存取,重写set 或 get方法
写法二:声明属性,指向私有实例变量,用于重写set 或 get方法 实现懒加载
写法三:声明私有实例变量,方便类中调用
写法四:一般情况是不用写的,当需要同时重写set和get方法的时候就需要@synthesize 实现属性指向