ios学习记录 day19 OC 4

1.属性:属性就是一对方法 与实例变量无关;

//为了解决每添加一个实例变量都要添加一对方法的麻烦,苹果引入了属性的概念,一个属性就代表一对方法(setter/getter)
//属性分为声明和实现

//属性的声明在.h
//属性的写法  @property 类型 属性名;
//产生方法的规则:
//- (void)setName:(NSString *)name;
@property NSString * name;//不要写_name

 

//类的最终形态

//声明

#import <Foundation/Foundation.h>

@interface Hero : NSObject

@property (nonatomic,copy)NSString * name;
@property (nonatomic,copy)NSString * sex;
@property (nonatomic,copy)NSString * skill;
@property (nonatomic)int hp;

-(id)initWithName:(NSString *)name Sex:(NSString *)sex Skill:(NSString *)skill Hp:(int)hp;

@end

//实现

#import "Hero.h"

@implementation Hero
-(id)initWithName:(NSString *)name Sex:(NSString *)sex Skill:(NSString *)skill Hp:(int)hp{
    self = [super init];
    if (self) {
        _name = name;
        _sex = sex;
        _skill = skill;
        _hp = hp;
    }
    return self;
}
@end

属性的特性
作用:改变属性生成的setter/getter的内部实现

//1.读写特性
// readwrite 可读可写(系统默认)
// readonly 只读

//2.原子特性(线程安全)
// atomic     能保证线程安全(加锁)(系统默认)
// nonatomic  不能保证线程安全 //推荐使用 占系统性能低 出错概率小

//3.语义特性(内存特性)
// assing  完全不用考虑内存问题 (用于基本数据类型)
// retain  对对象类型管理内存 (适用于所有的对象类型(带*号的))
// copy    对实现<NSCopying>协议的对象可以使用copy
//总结:只要是对象类型都必须使用retain/copy(字符串 NSString)

@property (nonatomic,copy) NSString * name;
@property (nonatomic,copy) NSString * sex;
@property (nonatomic,assign)int age;
@property (nonatomic,assign)int num;
@property (nonatomic,assign)int score;

 

 

posted @ 2014-03-26 15:31  lxl奋小斗  阅读(167)  评论(0编辑  收藏  举报