博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OC基础--内存管理中的@property关键字以及其参数
阅读量:7212 次
发布时间:2019-06-29

本文共 1249 字,大约阅读时间需要 4 分钟。

在上一篇博客中整理的内存管理,管理类的代码量会感觉很大,而且如果对象多的话,感觉到代码有点冗余。下面就介绍Xcode中为我们自动生成内存管理代码的关键字@property

例如:在Person这个类中,要拥有Phone这个类作为成员变量

之前的写法是:(还有一点时要记得在Person类重写dealloc方法中,一定[_phone release])

1 @interface Person : NSObject 2  3 { 4     Phone *_phone; 5 } 6 //setter 和 getter 的声明 7 - (void) setPhone:(Phone *)phone; 8 - (Phone *) phone; 9 10 @implementation11 //setter 和 getter 的实现12 - (void) setPhone:(Phone *)phone13 {14     if (_phone != phone)15     {        16         [_phone release];17         _phone = [phone retain];18     }19 }20 21 - (Phone *)phone22 {23     return _phone;24 } 25 @end

应用了@property关键字的写法:(dealloc方法中也一定记得release)

//这里的retain:生成set方法实现中,release旧值,retain新值--一行代码就搞定

@property (retain) Phone *phone;

下面才是今天的重点!

@property 的参数:

一、控制set方法的内存管理:

1.retain:release旧值,retain新值

2.assign:直接赋值,不做任何内存管理(默认)

3.copy

二、控制有没有set方法和get方法

1.readwrite:同时生成set方法和get方法(默认,用的少)

2.readonly:只会生成get方法

三、多线程管理

1.atomic:性能低(默认)

2.nonatomic:性能高

四、控制set方法和个头方法的名称

1.setter:设置set方法的名称,一定有个冒号:因为冒号也是方法的一部分

2.getter:设置get方法的名称

代码实例:

1 @property (nonatomic, assign,readwrite) int age;2 3 @property (nonatomic, retain) House *house;4 5 @property (nonatomic, assign, getter = getHeight, setter = setMyHeight:) int height;

 

转载于:https://www.cnblogs.com/gchlcc/p/5201328.html

你可能感兴趣的文章
小程序问题
查看>>
一天完成一点,进度太慢了啊
查看>>
好程序员教程分析Vue学习笔记五
查看>>
初识 ::after
查看>>
Does taro support react hook?
查看>>
小猿圈Linux 之用户和用户组管理(二)
查看>>
SQLServer之修改CHECK约束
查看>>
脑出血后遗症康复时间,成都顾连康复解答
查看>>
好程序员大数据点睛:关于HDFS的二三事
查看>>
RxHttp 一条链发送请求之强大的Param类(三)
查看>>
Android 手游闪屏极简方案
查看>>
极简风格的响应式简历模板
查看>>
深入理解es module
查看>>
canvas笔记
查看>>
Redis内核原理及读写一致企业级架构深入剖析1-综合组件环境实战
查看>>
【React深入】深入分析虚拟DOM的渲染原理和特性
查看>>
查找算法(下)
查看>>
基于 HTML5 WebGL 的 3D 渲染引擎构建工厂运作系统
查看>>
风继续吹
查看>>
性能优化 (七) APK 加固之 Dex 加解密,反编译都看不到项目主要代码。
查看>>