当前位置: 首页 > news >正文

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的声明和实现。

http://www.lryc.cn/news/336010.html

相关文章:

  • 02 Git 之IDEA 集成使用 GitHub(Git同时管理本地仓库和远程仓库)
  • CSS滚动条样式修改
  • 《零秒思考》像麦肯锡精英一样思考 - 三余书屋 3ysw.net
  • 使用docker制作Android镜像(实操可用)
  • 大厂MVP技术JAVA架构师培养
  • uniapp实现文件和图片选择上传功能实现
  • 2024认证杯数学建模C题思路模型代码
  • springcloud项目中,nacos远程的坑
  • 南京航空航天大学-考研科目-513测试技术综合 高分整理内容资料-01-单片机原理及应用分层教程-单片机有关常识部分
  • 【python】Flask Web框架
  • Electron+React 搭建桌面应用
  • 基于Android的记单词App系统的设计与实现
  • ELK 企业级日志分析系统 简单介绍
  • GET与POST:详述HTTP两大请求方法的语义、数据处理机制、安全特性与适用场景
  • Unity Pro 2019 for Mac:专业级游戏引擎,助力创意无限延伸!
  • C++设计模式:单例模式(十)
  • openssl3.2 - exp - zlib
  • 【故事】无人机学习之旅
  • torch.mean()的使用方法
  • windows安装Redis,Mongo,ES并快速基本掌握开发流程
  • ruoyi-nbcio-plus基于vue3的flowable的自定义业务提交申请组件的升级修改
  • 掌握网络抓取技术:利用RobotRules库的Perl下载器一览小红书的世界
  • 典型新能源汽车热管理系统方案分析
  • 使用Docker部署开源项目FreeGPT35来免费调用ChatGPT3.5 API
  • 《Linux运维实战:Kylin V10操作系统开启安装软件保留缓存设置》
  • 视频生成技术:从GAN到Latte
  • 机器学习中的激活函数
  • LinuxAndroid: 旋转编码器input输入事件适配(旋转输入)
  • 机器学习和深度学习-- 李宏毅(笔记与个人理解)Day10
  • perl 交叉编译