Object-C 之 @property

本文深入解析了属性描述符(Property)在编程中的应用,详细介绍了如何在代码中使用只读(readonly)、可读写(readwrite)属性以及它们在内存管理(retain/assign)、原子性(atomic/nonatomic)方面的区别。同时,提供了getter和setter方法的声明示例,帮助开发者理解属性描述符的高效使用。

@property (参数1,参数2)l类型 名称

参数的3类

1. readonly/readwrite

只生成get方法的声明

@property (readonly)int  age ;

= -(int)age;

同时生成set 和get方法

@property (readwrite)int  age ;


2. setter 处理:assign/retain/copy

@property (retain) Book *book;

//这里的retain代表:在set方法中,release 旧值,retain新值。

//是继承的对象一定要写retain 帮忙管理内存


@property (assign) int age; //基本数据类型不需要retain

=@property int age

基本数据类型不用考虑内存,set方法直接赋值,不进行retain操作


3. 原子性:atomic/nonatomic

atomic:提供多线程安全,也就是可以多了线程调用一个方法

给方法加锁:get set加锁

防止在写入未完成的时候被另一个线程读取,造成数据错误。而这种机制是耗费资源的,所以iphone这种小型设备上,如果没有多线程间的通讯编程,那么nonatomic是个非常棒的选择

nonatomic :不需要考虑线程安全,禁止多线程

不涉及多线程的话nonatomic就够了,另外由于不涉及锁操作,所以它执行相对快


//getter/setter 指定方法名

@property (nonatomic, getter=isRich) bool rich;






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值