搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
Gausst松鼠会
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
【华为OD机试】手机App防沉迷系统(贪心算法—Java&Python&C++&JS实现)_手机app防沉迷系统华为od
2
如何保证分布式文件系统的数据一致性
3
RabbitMQ 笔记_x-delayed-message
4
32单片机 C语言 寄存器(四)_使用c语言判断单片机寄存器数据位
5
Linux下的CentOS7连接不上外网,yum失败_yum install rpm 无法联网失败
6
测试用例设计方法_等价类划分法(游戏向)_请简述一下等价类划分法设计测试用例的方法。
7
当AI遇见现实:数智化时代的人类社会新图景
8
MySQL安装配置教程-win10_mysql5.6安装
9
揭秘游戏行业遭遇大规模DDoS攻击后的影响和真相丨阿里云河南_游戏公司被黑客攻击的影响
10
【人工智能基础】GAN与WGAN实验
当前位置:
article
> 正文
iOS开发 arc与非arc代码的区别_mac arc与非arc
作者:Gausst松鼠会 | 2024-05-11 20:12:41
赞
踩
mac arc与非arc
Objective-c中提供了两种内存管理机制MRC(MannulReference Counting)和ARC(Automatic Reference Counting),分别提供对内存的手动和自动管理,来满足不同的需求。其实arc 内部机制原理也是来源于mrc ,arc 是在 iOS 5/ Mac OS X 10.7 开始导入,利用 Xcode4.2 可以使用该机能。arc的首要目的就是让代码简洁化,编程简单化,开发更顺心应手,减少不必要的小问题小疏忽;顾名思义,自动引用计数管理,关于内存的申请,使用和释放过程都交给系统自动实现,我们可也不用关系里面的过程,但是事实上还是mrc的原理,只是是系统帮我们做了管理;
mrc,手动引用计数器管理,是在我们申请到某一块内存,在使用之后,要手动释放,释放机理涉及到计数器问题,如果未释放内存,会造成内存的浪费,俗称内存泄露,甚至引起很多未知的错误结果,这对程序有威胁很大,但是,何时释放,怎么释放,注意哪些问题,很有讲究,这就是mrc的不便之处,也是苹果推出arc的缘由;
mrc的具体机理,计数器是什么,在程序过程中的变化,在达到什么程度会释放内存,怎么操作;建议查阅相关文档;
mrc ,在代码上下形式主要表现为,调用该对象时,要做retain操作,使用完成后要release,最后还要重写dealloc方法,对该类的所有对象做释放,所以在mrc的代码会有autorelease,retain,release等词语,
而arc不允许有这些词汇,应为这些操作都由系统自动完成。
引用计数器
1.和内存管理相关的方法
1)alloc 引用计数器自动设为1
2)retain 引用计数器+1 返回了经过+1以后的当前实例对象
3)release 引用计数器-1,并不一定是释放
4)retainCount 获取引用计数器的值
5)dealloc 当实例对象被销毁之前,系统自动调用。
一定要调[super dealloc]
和内存管理相关的名词
1)僵尸对象:此对象被销毁,不能再使用,不能给它发送任何消息
2)野指针:指向僵尸对象(不可用的内存)的指针,给野指针发送消息将会产生不可控的后果。
3)空指针:没有指向任何对象的指针,给空指针发消息不会产生任何行为
内存管理原则
1.如果你想持有某个对象,就必须负责让做一次retain操作,引用计数器+1.
2.如果你想放弃对某个对象的持有权,就要负责让其做一次release操作,引用计数器-1.
3.谁retain,谁release。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/556175
推荐阅读
article
如何终止
merge
_
git
merge
--
abort
...
如果您在执行
git
merge
操作过程中想要终止合并,可以使用命令。这个命令通常用于在遇到合并冲突时放弃当前的合并尝试,...
赞
踩
article
ROS2
入门
,
launch
文件
解析(同时启动多个
节点
)
_
launch
description...
1.
launch
文件
实例:from
launch
import LaunchDescriptionfrom
launch
...
赞
踩
article
中文电子病例
命名
实体
识别
项目_
ccks2018
中文
命名
实体
识别
...
MedicalNamedEntityRecognitionMedical Named Entity Recognitio...
赞
踩
article
前后端分离基于spingboot+
vue
的
土特产
销售
系统
的设计与
实现
_基于
vue
+springboo...
在当今高度发达的信息中,信息管理改革已成为一种更加广泛和全面的趋势。为确保中国经济的持续发展,信息时代日益更新,
土特产
销...
赞
踩
article
C++
中
如何自己封装
一个
Callable
...
有时候静态编译太不灵活,我们需要更灵活的运行时操作。又或真假设你在开发
一个
脚本,想注册本地的
C++
函数到脚本语言的标准库...
赞
踩
article
slam
必备库安装_
locate
package
libeigen3
-
dev
...
一般库标准安装_
locate
package
libeigen3
-
dev
locate
package
libeigen3
...
赞
踩
article
【
Python
】基于
数据库
连接
实现
简单
注册
功能_
python
连接
数据库
实现
注册
功能...
针对
数据库
的操作,一共分三步:1.建立
数据库
连接
2.执行SQL语句3.关闭
数据库
连接
Python
操作
数据库
(如MySQL...
赞
踩
article
python
设计一个简单
的
登录
界面
_
tkinter
+
pickle
+
python
的
一个
登录
界面
设计...
#导出模块import
tkinter
as tkfrom
tkinter
importmessageboximportp...
赞
踩
article
蓝桥
杯
题库及解析(
java
语言版
)
_
蓝桥
杯
java
填空题
...
题目描述小蓝要为一条街的住户制作门牌号。这条街一共有 2020位住户,门牌号从 1 到 2020 编号。小蓝制作门牌的方...
赞
踩
article
代码
随想录
学习
Day
2...
所以可以考虑使用双指针法,使用两个指针指向数组的两端。②窗口的终止位置就是for循环的索引,起始位置则是如果当前窗口中的...
赞
踩
article
【
数据库
原理
及
应用
】
期末
复习汇总&高校
期末
真题
试卷
03
...
1
数据库
中存储的基本对象是_____。A 数字 B 记录 C 元组 D 数据2 下列不属于
数据库
管理系统主要功能的是_...
赞
踩
article
【
hive
】
行
转列—
explode
()/pos
explode
()/
lateral
view
函数使用...
【
hive
】
行
转列—
explode
()/pos
explode
()/
lateral
view
函数使用场景_
hive
ex...
赞
踩
article
AI绘画:使用Stable Diffusion
ComfyUI
进行
换脸
:
IPAdapter
Face...
在数字艺术和媒体编辑领域,
换脸
技术已经成为一种流行且强大的工具。它允许创作者将一个人物的面部特征无缝地转移到另一个人物上...
赞
踩
article
分布式
机器
学习
在
医疗
健康领域的研究...
1.背景介绍随着数据的增长和计算能力的提升,
机器
学习
技术在
医疗
健康领域的应用也逐渐成为可能。
分布式
机器
学习
是一种在大规模...
赞
踩
article
基于SpringBoot
校园
食堂
订餐
系统
的设计与实现_基于
spring
boot
的
校园
食堂
智能点餐系...
校园
食堂
订餐
系统
在对开发工具的选择上也很慎重,为了便于开发实现,选择的开发工具为Eclipse,选择的数据库工具为Mys...
赞
踩
article
基于
Java
+
Springboot
+Vue+
elememt
宠物用品
商城
系统
设计实现...
宠物用品
商城
系统
的整体架构是在Windows操作
系统
中进行开发运用的,而且目前PC机的各项性能已经可以胜任普通网站的we...
赞
踩
article
UNIAPP
----两种方法解决自定义
tabbar
,切换无卡顿白屏_
uniapp
切换
页面
会白屏
一下...
缺点:代码较多,不封装维护较乱。_
uniapp
切换
页面
会白屏
一下
uniapp
切换
页面
会白屏
一下 ...
赞
踩
article
python
简单实现天猫手机
评论
标签
提取
--
自然语言
处理_淘宝电商
评论
关键词
提取
-
csdn
...
作为国产机的脑残粉,这次试试用
自然语言
处理的方法简单的
提取
手机
评论
的标签。大概步骤:爬取手机的10万条
评论
文本结巴中文分...
赞
踩
article
Elasticsearch
:使用
MongoDB
connector
同步
数据
到 Elasticse...
MongoDB
是一个基于分布式文件存储的
数据
库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能
数据
存储解...
赞
踩
article
小米手机
Uiautomator
启动失败问题
uiautomator2
.
GatewayError
报错_...
小米手机
Uiautomator
uiautomator2
.
GatewayError
报错_
uiautomator2
.exc...
赞
踩
相关标签
git
c++
ubuntu
命名实体识别
电子病例
序列标注
CRF
LSTM
vue.js
前端
数据库
开发语言
Callable
模板元编程
slam
python
mysql
pymysql
python设计一个简单的登录界面
java
算法
学习
oracle
jvm
时序数据库