OC学习日记04-OC中类的属性

OC中类的属性

这里写图片描述

前言

在OC的类中,我们想把自己一些类里面的变量给隐藏起来,就要用到@protected还有@private,而对这些变量进行赋值还有调用,就要用到设置器(setter)与访问器(getter),但是我们会发现,如果用到标准的设置器和访问器的定义的话,代码量会非常的大,如果在制作大程序的时候,会使代码非常的“累赘”。那么,有没有简便的方法呢,这时候就要用到我们今天所说的类的属性。

标准的设置器与访问器格式例子:

标准的设置器与访问器格式例子标准的设置器与访问器格式例子

属性的声明
@property NSString *homeAddress;
相当于声明了设置器 与 访问器-(void)setAddress:(NSString*) address;与-(NSString *)address;
而属性的使用也非常简单:

在.h文件中的语法为:

@property (readwrite,nonatomic,strong) NSString *name;
@property (readonly,nonatomic,assign)NSInteger age;
@property NSString *homeAddress;

在.m文件中的语法为:

@synthesize homeAddress =_homeAddress;

注意:

如果我们@synthesize 注释掉 这个时候系统会为我们产生下划线开头的变量
_homeAddress

访问读写 原子性,内存管理

1.存取方法名称

系统默认的存取方法名称 propertyName 和 setPropertyName ,例如name 和 setName:方法,这样做方便采用点语法,可以采用默认的存取方法。
getter=getterName
setter=setterName
注意,如果改变了getter和setter方法名称,则必须提供自定义的方法。

2.属性的定义的相关语法

访问读写

readonly 指明属性是只读的,系统只会产生getter,而不会产生setter方法‘
readwrite 指明属性是可读写的,这是默认的,因此可以省略
对于只读属性,如果试图通过点语法赋值,会编译错误

原子性

atomic 原子操作,这是默认的
nonatomic 非原子操作,一般就使用nonautomic,但是没有办法保证在多线程环境下不出错。

内存管理
retain

会通过retain来持有目标属性对象,之前的对象会接收到释放的消息

copy

会通过copy复制对象,之前的对象会接收到释放的消息

assign

采用简单的赋值方法,这是默认的方法

strong

表示强引用关系,即拥有目标对象的所有权

weak

表示弱引用关系,不拥有目标对象的所有权。当目标对象被销毁之后,属性只会被自动设为nil。

关于内存管理这几个语法的区别

strong 相当于retain 或者是copy,当我们这个属性是对象(NSString)的时候,我们就要用这三个strong、retain 、copy。
weak 相当于 assgin,基本数据类型就要用到assgin或者weak来描述。

点语法

在主函数main中我们可以对其通过点语法引用:

      NewStudent *newStudent1=[[NewStudent alloc]initWithName:@"Wsss" Age:23 HomeAddress:@"Wsss"];
        NewStudent *newStudent2=[NewStudent newStudentWithName:@"Wsss" Age:23 HomeAddress:@"Wsss"];
        newStudent1.name=@"sss";
        newStudent2.name=@"asdas";
      NewStudent *newStudent=[[NewStudent alloc]init];
        newStudent.name=@"Rick";
       // newStudent.age=@"25";
        newStudent.homeAddress=@"GZ";
        NSLog(@"%@",newStudent.name);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值