属性

属性的定义

属性 属性类型 属性名
@property (nonatomic, copy)NSString *name;
@property (nonatomic, assign)NSInteger age;
//属性的作用: 1.可以自动生成setter和getter方法(包含声明和实现) 2.如果没有定义实例变量,则会自动生成一个实例变量(_属性名)

属性的属性 (重点)

/**
* 1.读写特性
readonly :@property (readonly) NSString *name; 只读 属性只会声明和实现getter方法,不会生成setter方法,即只能访问和取值,不能做赋值
readwrite :(默认的)即可读也可写 ,也就是属性会自动生成setter和getter方法,系统默认的读写特性,如果不写该关键字,则会默认是readwrite
setter :指定setter方法的方法名,即修改setter方法名
getter :指定getter方法的方法名 即修改getter方法名
@property(setter=haha:, getter=ha ) NSString *name;

2.原子特性 (和线程安全有关)
atomic 原子特性(默认) 保证在多线程环境下访问实例变量是安全的,因为会多加一把线程锁

nonatomic 非原子特性 (苹果推荐使用的)不保证在多线程环境下访问实例变量的安全性
一般情况下经常使用

3.语义特性
assign :针对于基本数据类型 只是做简单地赋值和取值操作,(默认的)
retain: 针对于对象类型,引用计数加1, setter getter的内部做过内存优化处理
copy:针对于对象类型,会copy出来一个新的对象,拷贝出来的新的对象引用计数会+1;对象服从NSCopying 协议
3.属性的实现 name = _name的含义:属性的setter和getter方法时在操作实例变量_name;等号右边的任意起名字,但是系统机制是先检查.h中有没有定义实例变量,如果没有,这时会自动生成一个,生成的是一个 私有的 实例变量
//从ios6之后,属性可以不写实现了,编译器会自动生成,默认生成的是,操作的是属性名同名加_的实例变量
(@synthesize name = _name;在人工定义时一定要把文件的语言改成 手动释放)
类的延展中可以为该类添加私有实例变量 属性 和方法

//重写输出方法 每一次NSLog时都会走此方法
例如:
- (NSString *)description
{
return [NSString stringWithFormat:@”%ld/%ld”, _mol,_den];
}
这是你输出一个分数 NSLog(@”%@”,num4);
这是输出会按重写方法后的格式输出

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值