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

被折叠的 条评论
为什么被折叠?



