Objective-C学习笔记(ARC,分类,延展)4.10

**1.自动释放池@autoreleasepool:**存入到自动释放池的对象,在自动释放池销毁时,会自动调用池内所有对象的release方法。调用autorelease方法将对象放入自动释放池。

Person *p1 = \[ \[ Person alloc init ] autorelease];

2.在类方法里写一个同名的方法,用于创造对象。

(+)instancetype person{

return \[ \[ self alloc init ] autorelease];

}

**3.ARC:**自动计算对象的引用值,不要写release、retain、autorelease,retainCount关键字。

**没有强指针指向该对象时,对象会被回收。**要么强指针被回收要么置为nil。

4.强指针弱指针:默认为强指针,_strong来声明强指针。_weak来声明弱指针。

**5.参数strong和weak:**针对指针,默认为strong。strong代表@property声明的私有属性是强类型。weak是弱类型。

**6.循环引用:**A中有B,B中有A,如果两个都是strong就会内存泄漏。应该一端strong一端weak。

如果在MRC中一端retain一端assign。
7.ARC类和MRC类兼容:命令:-fno-objc-arc。
**8.分类(Category):**将一个类分为多个模块。
@interface 本类(分类) @end
@implementation 本类(分类) @end
只能增加方法,不能增加属性,不能访问本类的私有属性,但能调用setter和getter。
**9.分类的作用:**将一个臃肿的类分多个模块管理,对一个现有类加方法。
10.延展Extension:是一个特殊的分类,没有类名,只有声明没有实现,实现与本类共享,也是类的一部分。将延展写在本类的实现文件。

@interface 本类() @end

11.延展的作用:为类定义私有成员,如果类的成员只希望在类内部访问,就定义在延展中。如果类的成员允许外界访问,就定义在本类。

**12.延展和分类的区别:**①分类有名字,延展没名字。②每个分类都有单独的声明和实现,延展只有声明没有实现,和本类共享一个实现。③分类只能新增方法,延展中任意的成员可以写。④分类中可以写@property,只会生成setter和getter的声明,延展写@property生成私有属性,生成setter和getter的声明和实现。

相关推荐
ACP广源盛139246256732 分钟前
选型笔记:Type‑C 扩展坞方案评估|DP1.2 转 HDMI2.0 桥接芯片 GSV2201D@ACP
笔记·硬件架构·硬件工程·视频·国产芯片
WEI_YANG_JU35 分钟前
初中数学教学中合作学习的研究与实践
学习
码农小韩40 分钟前
FPGA学习(一)——LED点灯与开发流程
学习·fpga开发·入门·环境配置·仿真·点灯
李长渊哦1 小时前
Qoder 自定义子智能体(Subagent)学习笔记
chrome·笔记·学习
pixelpilot2 小时前
Deta Surf:把笔记、文件和网页塞进同一个 AI 工作台
笔记·其他
代码山河2 小时前
基本类型转换:自动类型转换与强制类型转换
java·学习·架构·教程·面向对象·项目
蒸蒸yyyyzwd2 小时前
学习笔记 复盘
笔记·八股
旖旎夜光3 小时前
【C++ 基础入门】命名空间、输入输出、缺省参数与函数重载
开发语言·c++·笔记·学习
m4Rk_3 小时前
【论文阅读】Agent 记忆机制(119):EvoLife——让具身 Agent 把主动问到的答案沉淀为可复用的空间经验
论文阅读·人工智能·学习·开源·github
程序猿乐锅4 小时前
万字详解Single-flight(单飞模式)
java·开发语言·分布式·后端·学习·single-flight