Objective-C学习笔记(内存管理、property参数)4.9

**1.引用计数器retainCount:**每个对象都有这个属性,默认值为1,记录当前对象有多少人用。

为对象发送一条retain/release消息,对象的引用计数器加/减1,为对象发一条retainCount,得到对象的引用计数器值,当计数器为0时自动调用对象的dealloc方法。

手动发送消息:-(id)performSelector:(SEL)@Selector

Person *p = [Person new];

SEL s = @selector(func);

p performSelector:s1\]; 等于 \[p func\]; **2.MRC:**手动引用计数/手动内存管理:手动发送retain和release。 **ARC:**自动引用计数/手动内存管理: 自动 发送retain和release。 **3.野指针:**OC中的野指针:指针指向的对象已经被回收了。避免野指针:设置nil。 **4.回收内存空间**的本质:代表变量所占的空间可以分配给其他人了。 **5.僵尸对象**:1个已经被释放的对象,但是这个对象所占的空间还没被分配。 **6.内存泄漏:**对象没有被及时回收,一直在内存中,直到程序结束。 7.MRC模式下,对象时OC对象,setter和dealoc应该写内存管理机制。 **8.@property:**自动生成私有属性,属性的getter和setter方法的声明和实现。 @property(参数1,参数2)数据类型 名称; **参数:** 多线程相关的:**atomic** :默认值,setter方法有线程安全锁,效率低;**nonatomic:**反之。 setter方法相关的:**assign** :默认值,setter方法直接赋值;**retain**:生成符合MRC内存管理的setter方法:先判断对象是否是同一个,如果不是,release旧的,retain新的。 只读只写:**readwrite** :默认值,同时有getter和setter;**readonly**:只有getter。、 生成getter和setter方法名称相关的:可以修改setter和getter方法名称。 9.@class:A包含B、B包含A的循环嵌套问题,用@class标注这是一个类。

相关推荐
Yilena20 分钟前
带你轻松学习LangChain4j
java·学习·langchain
左左右右左右摇晃20 分钟前
系统性能指标与损耗分析
笔记
是翔仔呐1 小时前
第13章 SPI通信协议全解:底层时序、4种工作模式与W25Qxx Flash芯片读写实战
c语言·开发语言·stm32·单片机·嵌入式硬件·学习·gitee
悠哉悠哉愿意1 小时前
【单片机复习笔记】第十六届省赛复盘
笔记·单片机·嵌入式硬件
是翔仔呐1 小时前
第14章 CAN总线通信全解:底层原理、帧结构与双机CAN通信实战
c语言·开发语言·stm32·单片机·嵌入式硬件·学习·gitee
iThinkAi智能体2 小时前
1个运营带4个实习生,周产350篇笔记:小红书图文矩阵真的没那么玄乎
人工智能·经验分享·笔记
Yu_Lijing2 小时前
基于C++的《Head First设计模式》笔记——备忘录模式
c++·笔记·设计模式·备忘录模式
Yilena3 小时前
一文讲透 Agent 应用中的记忆工程
人工智能·学习
再玩一会儿看代码3 小时前
Java中 next() 和 nextLine() 有什么区别?一篇文章彻底搞懂
java·开发语言·经验分享·笔记·学习
Heartache boy3 小时前
野火STM32_HAL库版课程笔记-TIM通道输出应用之PWM实现呼吸灯
笔记·stm32·单片机·嵌入式硬件