Objective-C内存管理——retain属性

DeepSeek-OCR又更新:一起看下OCR1和OCR2 DeepSeek-AI 最近又又开源了,这次是DeepSeek-OCR2,结合之前发布的DeepSeek-OCR ,可以发现DeepSeek走出了一条不同于主流 OCR 方案的技术路线。第一代模型探索了**“视觉作为文本压缩介质”的可行性,打破了传统的序列长度限制;第二代模型则通过“Visual Causal Flow(视觉因果流)”**架构,将因果推理引入视觉编码器,解决了复杂排版下的阅读顺序难题。本文将从架构设计、逻辑结构、训练范式及工程实现四个维度,深度剖析这两代模型的异同与创新。 阅读详情

先看一个例子:


ViewController.h

@interface ViewController : UIViewController{
    NSString *iVal1;
}
@property (nonatomic,retain)NSString *iVal1;

@end

定义一个变量,并生成retain属性。


ViewController.m

@synthesize iVal1;

实现setter和getter方法。


ViewController2.m

#import "ViewController.h"
- (void)viewDidLoad
{
    [super viewDidLoad];
    NSString *iVal2 = @"xml_eason";
    NSString *iVal3 = [NSString stringWithFormat:@"%@",iVal2];
    ViewController *viewController = [[[ViewController alloc]init]autorelease];
    viewController.iVal1 = iVal3;
}

这样就内存遗漏了!~~



1. retain属性需要在本类的实现文件的dealloc函数中release掉。

2. 因为本类中retain属性自带一次retain,所以需要在dealloc中release之。不管在本类中,还是其他类中用到此属性,只要照顾好自己这一块就好了,就是把她当成普通的变量,如果计数+1了,-1就ok了。

3. ViewController.h里的self.iVal1和ViewController2.h里的viewController.iVal1是一样的,都是“对象名.属性”。 

4. ①本例中viewController.iVal1 = iVal3;是用“=”即assign赋值的,不会计数+1,所以不用release;

    ②其他类中viewController.iVal1 = [[NSString alloc]initWithString:iVal3];一般,一个类用到其他类的属性,并不会对其重新初始化并赋初值。所以,不要这样操作。

    ③本类中self.iVal1 =  [[NSString alloc]initWithString:@"xml_eason"];在本类的某方法中alloc了,计数+1,所以要在本方法中对其autorelease或者release。因为iVal1是retain属性,她还有一个计数的,在其他方法中依然可以使用,只要保证本方法内的计数守恒即可。

     ④本类中iVal1 = [[NSString alloc]initWithString:@"xml_eason"];此处没有使用属性而是成员变量,除了定义处,其他地方self.iVal1和iVal1等价的。因为iVal1已经在dealloc中release了,所以不可对她release或autorelease。

         反而,在本类的某方法(比如A)中定义了iVal1 = [NSString stringWithString:@"xml_eason"];如果其他方法也要使用的话,需要方法A中iVal1定义处需要retain一次。因为工厂方法赋值,出了本函数(方法),iVal1已经autorelease了,计数为0,不能再用了。


总之,retain属性需要在dealloc中release,然后其他地方和普通变量一样。




计算机视觉:相机模型与参数标定 一、相机投影模型 1、小孔成像 2、相机模型中的四个平面坐标系 3、像主点偏移 4、畸变现象与内参矩阵 5、外参矩阵 二、相机标定:张正友棋盘格标定法 1、张正友棋盘格标定法描述 2、计算外参和内参 2.1 计算单应性矩阵H 2.2 计算内参数矩阵 2.3 计算外参数矩阵 3、实验:MATLAB实现 3.1 实验数据 3.2实验过程 3.3 实验结果 4、实验:OpenCV实现 4.1 实现代码 4.2 实验结果 5、实验分析与总结 阅读详情

相关推荐

YOLOv5添加注意力机制的具体步骤

本文主要介绍了 本文在此篇博客的基础上向YOLOv5-5.0版 本文主要包括以下内容一、CBAM注意力机制添加(1)修改yolov5s主干网络(2)在common.py中添加可调用的CBAM模块(3)向yolo.py文件添加CBAMC3判断语句二、SE注意力机制添加 本文以yolov5s网络为例 一、CBAM注意力机制添加 注意力机制可以添加在backbone,Neck,Head等部分,接下来本文以backbone主干网络为例 (1)修改yolov5s主干网络 1.在yolov5-5.0工程文件夹下,找到m

thy0000的博客 2万+

Objective-C——retain/copy/assign/atomic/nonatomic/strong/weak/readonly/readwrite详解

【atomic/nonatomic】 (1)atomic[默认属性]:OC使用的一种线程保护技术,是防止在写未完成的时候被另外一个线程读取,造成数据错误。而这种机制是耗费系统资源的,所以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatomic是一个非常好的选择。 (2)nonatomic:非原子性访问,属性赋值的时候不加锁,多线程并发访问会提高性能。但可能会造成不安

乞力马扎罗的雪CYF的博客 4378

Synopsys PCIe IP 实战笔记:手把手教你配置本地数字回环(PIPE/RMMI)

本文详细介绍了Synopsys PCIe IP本地数字回环(PIPE/RMMI)的配置与调试全流程,涵盖硬件连接、寄存器操作及实战技巧。通过数字回环模式,开发者可在无真实对端设备的情况下验证PCIe接口功能,适用于芯片验证和FPGA原型开发。文章还提供了常见问题排查和性能优化建议,助力高效完成协议解析与调试。

weixin_30394669的博客 322

oc小练习

1.Copy和retain的区别 (1)copy:建立一个索引数为1的对象,然后释放旧对象      使用范围:对NSString,在赋值时使用传入值的一份拷贝。拷贝工作由copy方法执行,此属性只对那些实行了NSCopying协议的对象类型有效。    (2)retain:      释放(release)旧对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1  使用范围:

xiaoben_mao的专栏 832

鸿蒙设备部署轻量级Web服务器NexServer实践

Web服务器作为互联网基础设施的核心组件,其轻量化部署在移动终端领域具有重要实践价值。本文以鸿蒙操作系统为技术载体,深入解析微内核架构如何通过资源隔离和分布式软总线实现服务高可用。重点探讨NexServer这一专为嵌入式场景设计的轻量级服务器,其ARM原生支持特性与15MB级内存占用,在HTTP/2协议处理与WebSocket通信中展现出独特优势。在智能家居控制面板、边缘计算节点等物联网典型场景中,鸿蒙设备结合NexServer的方案相比传统Nginx部署可降低60%资源消耗。通过实测数据对比,该组合在50

weixin_30411239的博客 481

第一节:从Chat_Bot 到 AI_Agent——一个范式转换

本文系统剖析了工业级AI代理系统ClaudeCode的设计原理与工程实践。通过对比ChatBot与Agent的三个本质差异:自主循环决策vs单轮应答、环境交互vs纯文本I/O、持久状态管理vs无状态对话,揭示了构建生产级Agent系统的关键挑战。文章详细解析了ClaudeCode的五层架构设计、1800+文件组成的运行时系统,包括工具调度、权限管理、状态持久化等核心机制,并阐述了从简单API调用到完整Agent系统的演进路径。

2201_75869398的博客 67

Objective-C学习之旅(四)----内存管理2----retain点语法

一、retain属性的主要作用   1、O-C内存管理和点语法     1>OC内存管理正常情况要使用大量的retain和relrese操作     2>点语法可以减少使用retain和release的操作 二、@property(retain)编译器如何申明   编译器对于@property中的retain展开是不一样的   主要是要释放上一次的值,增加本次...

weixin_30797027的博客 148

YOLOv9改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计

实时检测器架构的轻量级设计GsConv。

Limiiiing的博客 1364

ObjC的Retain的属性和Copy的区别

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! --------------------------------------------   ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------详细请查看:www.itheima.com

海阔天空 1299

Qt入门教程【基础控件篇】QLineEdit输入框

QLineEdit输入框

小鱼酱的博客 3261

HTML炫酷烟花④(完整代码)

HTML语言实现炫酷烟花的完整代码。

AIGC 9万+

Objective-C 内存管理retain和release

OC使用引用计数来管理内存,每个继承NSObject的对象,内部都维护了一个引用计数器retainCount。当对象创建时(调用alloc或者new)引用计数器会+1, 手动调用retain()方法能够使引用计数器+1。手动调用release()方法能够使引用计数器-1,当引用计数器为0时,对象会自己主动调用"析构函数" dealloc()方法来回收资源和释放内存。 这样当一个对象被多个...

weixin_33725515的博客 203

Python 爬虫实战:在丁香医生抓取健康科普文章阅读量,普及健康知识

requests:用于发送 HTTP 请求,获取网页内容。或 lxml:用于解析 HTML 页面,提取目标数据。pandas:用于数据清洗和分析。matplotlib和seaborn:用于数据可视化。通过本项目,我们实现了以下目标:使用 Python 爬虫抓取丁香医生的健康科普文章阅读量。对数据进行清洗和分析,找出热门文章。通过可视化展示数据,并普及健康知识。

u014481728的博客 1566

ios retain属性

众所周知IOS的retain属性来解决了一些指针引用问题,但同时如果不了解其特点,也就很容易导致double free或没有free. Student *st;  //其中student为NSObject子类 @property (nonatomic,retain) Student *st;  再来看一下点操作。 self.st = xxx; 其实是执行了sett

fengsh998的专栏 4798

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

objective C 内存管理及属性方法具体解释

oc为每一个对象提供一个内部计数器。这个计数器跟踪对象的引用计数,当对象被创建或拷贝时。引用计数为1。每次保持对象时,调用retain接口。引用计数加1。假设不需要这个对象时调用release,引用计数减1,当对像的引用计数为0时,系统就会释放掉这块内存,释放对象调用dealloc 当对象包括其它对象时,...

weixin_30652271的博客 88

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

oc内存管理中retain属性对应的setter实际语法代码实现及原理

使用@property配合@synthesize可以让编译器自动实现getter/setter方法,使用的时候也很方便,可以直接使用“对象.属性”的方法调用。而其中的assign,copy和retain三个属性及点语法在oc内存管理中起着至关重要的作用。在此仅对retain属性的实际语法代码极其原理经行剖析。 retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1

wangqueguoqu的专栏 1195

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

objc--对于Retain和Assign属性的理解

在写程序时,对于要定义的变量进了习惯于加上retain属性,但对其到底起到什么作用却一直不是很明白,今天做了一个demo,终于弄清了他们的意思。 比如我要定义一下字符串var: NSString *var; 声明Property时,@property(nonamtic,assign)NSString *var; 将属性声明为Assign,当使用@Synthsize生成Get

爱喝水的人 1832

Objective-C中 copy, retain, assign , readonly , readwrite, nonatomic区别

nonatomic:非原子性访问,对属性赋值的时候不加锁,多线程并发访问会提高性能。如果不加此属性,则默认是两个访问方法都为原子型事务访问。 (atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写未完成的时候被另外一个线程读取,造成数据错误。而这种机制是耗费系统资源的,所 以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatomic是一个非常好...

alnh4952的博客 150

assign,copy,retain -Object-C中纠结的三个属性(retain)

assign,copy,retain 这三个属性在我们申明属性时,经常用到,那么到底时什么东西呢 ?有什么意义呢?那我们就来看清楚把。 开始吧,不废话了,还是用代码说话。 先看assign 的情况,因为只是默认的方式 @property(nonatomic,retain)NSString*name; 那么编译器会生成,相应的get,se...

jacklin_01的博客 284

Objective-C - retain release autorelease assign copy

转载地址:http://blog.youkuaiyun.com/jiarusun000/article/details/6991249 Objective-C - retain release autorelease Objective-C在管理内存时,遵循一套简单的规则。 每一个对象都有一个名为"retainCount"的变量,它表示该对象有多少个引用。 [java]

kakukemeit的专栏 651

Objective-C内存管理

1.引用计数 Objective-C使用引用计数来管理内存,对象有个计数器,用以表示当前有多少个事物想令此对象继续存活下去。NSObject协议声明了下面三个方法用于操作计数器,以递增或递减其值: retain 递增保留计数 release 递减保留计数 autorelease 稍后清理“自动释放池”时,再递减保留计数。 对象创建出来之后,对象的保留计数至少为1。若想令某对象

pengquanhua的博客 1000

objective-c内存管理

1.方法的基本使用1> retain :计数器+1,会返回对象本身2> release :计数器-1,没有返回值3> retainCount :获取当前的计数器4> 重写dealloc方法 * 当一个对象要被回收的时候,就会调用 * 一定要调用[super dealloc],这句调用要放在最后面2.概念1> 僵尸对象 :所占用内存已经被回...

defweyft983563的博客 126

对于Retain和Assign属性的理解

对于Retain和Assign属性的理解         以下文章转载自:http://www.189works.com/article-36809-1.html           在写程序时,对于要定义的变量进了习惯于加上retain属性,但对其到底起到什么作用却一直不是很明白,今天做了一个demo,终于弄清了他们的意思。 比如我要定义一下字符串var:

tangaowen的专栏 1339

Objective-C 属性(2)

上一篇中我们定义属性使用copy,@property里面各种各样的配置到底是什么呢,我们该如何使用?其中atomic, nonatomic, readonly, readwrite, assign, retain, copy 这些关键字有什么用呢?我们看看下面的代码:@interface Person:NSObject{ @property(nonatomic,copy) NSString *nam

yanshi_hu的博客 336

【每天总结一个ios开发心得】对于Retain和Assign属性的理解

http://bbs.9ria.com/thread-203030-1-1.html 比如我要定义一下字符串var: NSString *var; 复制代码 声明Property时, @property(nonamtic,assign)NSString *var; 复制代码 将属性声明为Assign,当使用@Synthsize生

mituan1234567的专栏 495

Objective-C入门教程03:属性(@property和@synthesize)

在Java中,特别是一个标准的POJO类,我们定义了一些属性,然后针对每个属性生成相应的getter和setter.例如: package com.demo; /** * 手机类 * @author liuzc */ public class Phone { private String color; //颜色 private String os; ...

dinghui1875的博客 161
上一篇: 查找 EXC_BAD_ACCESS 问题根源的方法
xml_eason
博客等级 码龄14年 0粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值