@property中retain assign copy详解

关于property的各个修饰符(strong,weak,retain,assign,copy等等) 下面对property的修饰符作一次总结,上网查了不少资料,后面附上参考的资料链接,多谢他们的帮助。1、atomic 和 nonatomicatomic是默认的属性,表示对对象的操作属于原子操作,主要是在多线程的环境下,提供多线程访问的安全。我们知道在多线程的下对对象的访问都需要先上锁访问后再解锁,保证不会同时有几个操作针对同一个对象。如果编程中不涉及到多线程,不建议使用,因为使用atomic比no 阅读详情

  这是自己以前在新浪博客的一篇文章,今天回去看了看,觉得写的还行,就直接复制了过来。

  看了很多书上的描述,对retain assign 和copy的都是草草描述,没有谈及本质,但是retain assign 和copy却是内存管理的重要内容,所以自己总结了下,本文涉及到了Objective-C内存管理的原则,阅读前需要了解。

retain assign copy在@propeerty中的使用实际上是通过控制set方法进行内存管理。下面详细介绍:

1.retain:

   例如:

       @class Dog

       @property(nonatomic,retain) Dog *dog;

   注:nonatomic与atomic相对应,涉及线程,比较麻烦,这里不做赘述,读者仅需记住,nonatomic相对于atomic来说性能高,而声明属性时一般默认为atomic,故需在此申明nonatomic

这里使用了retain,那么在set方法中,究竟如何体现的呢?

- (void)setDog:(Dog *)dog

{
    
    if(_dog != dog){          //判断是否需要重新赋值
        
        [_dog release];        //释放旧引用,计数器-1
        
        _dog = [dog retain];   //重新赋值,计数器+1
        
    }
    
}


2.assign:

   例如:

       @property(nonatomic,assign)int count;

这里使用了assign,那么在set方法中,究竟如何体现的呢?

- (void)setCount:(int)count

{

   _count = count;

}


2.copy:

   例如:

          @property(nonatomic,copy)NSString * str;

这里使用了copy,那么在set方法中,究竟如何体现的呢?

- (void)setStr:(NSString *)str

{

 if(_str != str){          //判断是否需要重新赋值

      [_str release];        //释放旧引用,计数器-1

      _str = [str copy];   //重新赋值,使用copy

   }

}


总结:

  1.retain:先release旧值,再retain新值,在上例中_dog与dog最终指向同一快内存区域。

  2.assign:直接赋值,不考虑内存管理。

  3.copy:先release旧值,再copy新值,copy的本质为复制该内存所存储的内容,重新创建一个对象赋给其相同的内容,很明显,在copy这个过程中也发生了一次retain,不过这是个全新的对象。在上例中,_str与str最终指向了不同的内存区域,但其内容一样。

  4.从retain assign copy的特点中我们可以看出:

      retain一般适用于OC中的对象

      assign一般适用于非OC对象,如int等普通类型

      copy一般适用于NSString等不可变的对象,因为是重新创建了对象,并且内容不变,因此不用担心后面的操作会对该属性的值产生影响。

 

copy与retain实例分析:

      假设str为对象p的属性

      @property(nonatomic,copy)NSString *str;

      NSMutableSting *s = [[NSMutableSting alloc] setString:@"hello"];

       p.str = s;   //此时,str的值为@"hello"

      [s appendString:@"world"];   //此时,s的值为"hello world",但是str的值依然为"hello".

       但是如果开始时str的申明为:

       @property(nonatomic,retain)NSString *str;

    那么,在进行完 [s appendString:@"world"]之后,str的值将变为"hello world".因为str与s共用一块内存,内容完全相同,而s是可以改变的,所以s改变后,str也将改变。

   

科技中介服务机构如何高效完成技术成果的筛选与匹配服务?.docx 科技中介服务机构如何高效完成技术成果的筛选与匹配服务? 立即下载

相关推荐

coppeliasim+gym+sac机械臂到位实验

urdf文件

IOS开发 @property中assign、copy 、retain等关键字的理解

如果你是从Java、c#转到IOSka

嘻嘻哈哈 2009

产业园区如何通过数智工具精准识别企业技术需求,提高服务匹配效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

OC中@property属性关键字的使用(assign/weak/strong/copy)

OC中@property属性关键字的使用(assign/weak/strong/copy) 一、assign 用于 ‘基本数据类型’、‘枚举’、‘结构体’ 等非OC对象类型 eg:int、bool等 二、 weak 1. 一般应用: UI控件 2. 详细说明: (1)为什么建议UI控件一般使用weak?首先我们从controller来看,controller是被系...

weixin_30740295的博客 358

产业园区运营负责人怎样利用数智工具提升企业技术需求对接效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

搜素引擎+p2p+电脑全域搜素+快速检索文件

快速搜索电脑内一切文件,反应超快

iOS内存管理

IOS的对象都继承于NSObject, 该对象有一个方法:retainCount ,内存引用计数。 引用计数在很多技术都用到: window下的COM组件,多线程的信号量,读写锁,思想都一样。 (一般情况下: 后面会讨论例外情况) alloc 对象分配后引用计数为1 retain 对象的引用计数+1 copy copy 一个对象变成新的对象(新内存地址) 引用计数为1 原来对象计数不变

Reborn_Young的专栏 923

三相电压型PWM整流器PI双闭环控制Matlab仿真

内容概要:本文系统介绍了三相电压型PWM整流器的PI双闭环控制系统在Matlab/Simulink环境下的建模与仿真方法,重点阐述电压外环与电流内环的协同控制机制,通过PI调节器实现直流侧电压稳定控制及交流侧单位功率因数运行。内容涵盖电压定向控制(VOC)、空间矢量PWM(SVPWM)调制策略、电网不平衡条件下的功率平衡控制等关键技术,并延伸至维也纳(Vienna)整流器、中点电压平衡、滞环电流控制等多种先进拓扑与控制方法。配套提供Mathcad计算书,支持不同功率等级下的参数设计、闭环建模与工程化实现,形成从理论分析到仿真验证的完整技术链条,适用于电力电子系统科研与教学实践。; 适合人群:电气工程、电力电子及相关专业的研究生、科研人员,以及具备Matlab/Simulink仿真基础的工程技术人员。; 使用场景及目标:① 掌握三相PWM整流器双闭环PI控制系统的建模、仿真与动态性能分析;② 深入理解电压定向控制、SVPWM调制及电网不平衡工况下的先进控制策略;③ 利用Mathcad计算工具完成实际工程中整流器的参数设计与优化。; 阅读建议:建议结合Simulink仿真模型与Mathcad计算书同步学习,重点关注控制架构搭建、PI参数整定方法、系统稳定性分析及不同工况下的仿真验证,通过反复调试提升对控制性能的理解与工程应用能力。

Objective-C的@property 详解(retain是指针拷贝,copy是内容拷贝,★firecat推荐★)

文章来源:http://www.cnblogs.com/andyque/archive/2011/08/03/2125728.html 之前很多网友对我翻译的教程中的Property的使用感到有些迷惑不解,搞不清楚什么时候要release,什么时候要self.xxx = nil;同时对于Objective-c的内存管理以及cocos2d的内存管理规则不够清楚。本文主要讲解objc里面@p

$firecat利白的代码足迹$ 6390

【扩展卡尔曼滤波器EKF】基于UWB雷达的SLAM能够在室内环境内映射自然点地标,并改善机器人定位(Matlab代码实现)

内容概要:本文档详细介绍了基于Plecs软件构建的全桥LLC谐振变换器仿真模型,重点涵盖其在电力电子变换系统中的应用与研究价值。该模型用于深入分析LLC谐振变换器的核心工作特性,包括软开关技术的实现、谐振参数的精确设计以及变频控制策略的优化,旨在提升变换器的转换效率与系统稳定性。文档强调该仿真平台不仅支持独立建模,还可与Simulink等工具联合仿真,便于实现闭环控制算法的设计与验证,适用于高频高效电源系统的研发与教学实践。; 适合人群:面向具备电力电子、自动化或电气工程等相关专业背景,从事电源系统设计、变换器仿真研究工作的研发人员,以及研究生及以上学历的高校师生。; 使用场景及目标:①用于全桥LLC谐振变换器的拓扑结构验证与关键参数优化设计;②支持软开关特性分析、变频控制策略研究及系统效率提升;③作为高校电力电子课程设计、毕业设计或科研项目的仿真教学与研究平台; 阅读建议:建议使用者熟练掌握LLC谐振变换器的基本电路拓扑与工作原理,结合配套的设计报告与计算书开展仿真操作,重点关注谐振腔参数匹配、开关频率调节与控制策略对系统动态响应及效率的影响,以实现最佳的学习与研究成效。

三相充电桩维也纳PFC+三电平LLC谐振变换器三电平PSIM仿真设计(Simulink仿真实现)

内容概要:本文档系统性地整合了电力电子与电力系统领域的MATLAB/Simulink仿真资源,聚焦于三相充电桩中的关键变换器技术,重点涵盖维也纳PFC(Vienna Rectifier)与三电平LLC谐振变换器的建模与仿真,采用双闭环PWM控制、SVPWM调制、中点电压平衡控制等核心技术。同时包含图腾柱PFC、交错并联结构、电网不平衡下的功率平衡控制、双有源桥DAB变换器优化控制等多种先进拓扑与控制策略的仿真实现,其中多项成果复现自顶级EI期刊。资源体系进一步拓展至微电网调度、状态估计(如卡尔曼滤波、EKF、UKF、PF)、智能优化算法(如多目标粒子群、秃鹰算法)及机器学习预测(如CNN-LSTM)等多个前沿交叉方向,配套提供仿真模型、算法代码、设计PPT与参考文献,构建了一个完整且高水准的科研仿真知识体系。; 适合人群:电气工程、自动化、新能源等相关专业的研究生、科研人员及从事电力电子与电力系统仿真的工程师,要求具备扎实的电路理论基础和熟练的MATLAB/Simulink仿真能力; 使用场景及目标:①深入研究三相功率因数校正、高效DC-DC变换器的建模与控制机理;②高质量复现学术论文中的先进控制策略,支撑高水平论文撰写与课题攻关;③服务于硕士/博士毕业设计、科研项目申报及工程化原型开发; 阅读建议:建议严格按照资源目录的逻辑顺序循序渐进地学习,优先掌握基础变换器拓扑与经典控制方法,再逐步过渡到高级优化策略与多学科交叉应用,结合所提供的代码、PPT讲解与参考文献进行仿真调试与二次开发,以充分挖掘资源潜力,实现科研能力的实质性提升。

@property中retain assign copy详解

转载自:http://blog.sina.com.cn/s/blog_b716ca8d0102uy6s.html 说明:看了很多书上的描述,对retain assign 和copy的都是草草描述,没有谈及本质,但是retain assign 和copy却是内存管理的重要内容,所以自己总结了下,本文涉及到了Objective-C内存管理的原则,阅读前需要了解。 retain as

zhaolin53636848的专栏 447

批量 MAX 模型材质转换与多格式导出 对应脚本:批量导出物体转换材质有相同 - glb.ms 一、插件用途 批量读取指定文件夹中的 .max 场景文件,将识别到的多种材质简化为 Standar

批量 MAX 模型材质转换与多格式导出 对应脚本:批量导出物体转换材质有相同 - glb.ms 一、插件用途 批量读取指定文件夹中的 .max 场景文件,将识别到的多种材质简化为 StandardMaterial,然后把每个场景整体导出为指定格式,适合批量模型交付、格式转换和资产整理。 二、支持的导出格式 - FBX(默认格式) - OBJ - SKP - 3DS - OSGB - DAE - GLB - GLTF - STL 具体格式能否成功导出,还取决于当前 3ds Max 是否安装并加载对应导出器。 三、主要功能 1. 选择 MAX 文件夹:指定需要批量处理的 .max 文件目录。 2. 选择输出文件夹:可选;不指定时,每个导出文件放在对应 MAX 源文件所在目录。 3. 选择导出格式:从界面下拉列表中选择格式。 4. 开始:逐个加载扫描到的 MAX 文件,处理场景材质后导出整个场景,而不是只导出当前选择。 5. 文件重名处理:目标文件已存在时,自动尝试追加 _1、_2 等编号,避免直接覆盖同名文件。 四、材质转换方式 - 脚本会识别部分 VRay、Physical、Corona、GLTF、Standard、Autodesk 等材质类型。 - 转换目标为 StandardMaterial。 - 如果材质中能找到贴图文件,优先使用枚举到的第一张贴图作为漫反射贴图。 - 没有找到贴图时,尝试使用原材质的漫反射色、基础颜色或视口颜色等作为标准材质颜色。 - Multi/Sub 材质会逐个处理子材质。 该过程是面向通用导出的材质简化,不会完整保留原渲染器的所有材质层、反射、折射、凹凸和程序贴图网络。 五、GLB / GLTF 额外要求 - GLB 和

@property (assign,copy,retain)

@property (copy, assign) NSString *title;  什么是 之间的区别?  assign: 简单赋值,不更改索引计数(Reference Counting)。  copy: 建立一个索引计数为1的对象,然后释放旧对象  retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1  retain的实际语法为:  - (vo

happyrabbit456的专栏 748

电网不平衡下三相PWM整流器功率平衡控制仿真(Simulink仿真实现)

内容概要:本文围绕电网不平衡条件下三相PWM整流器的功率平衡控制策略展开研究,提出一种基于Simulink的高精度仿真模型,旨在解决电网电压不对称引起的输出功率波动、负序电流增加等问题。通过引入先进的控制算法,实现有功与无功功率的独立调节,有效抑制负序分量,提升系统在非理想电网条件下的稳定性与电能质量。文中详细阐述了控制系统架构设计,包括锁相环(PLL)、dq变换、双闭环控制策略(电压外环与电流内环)、SVPWM调制及负序分量补偿机制,并结合仿真结果验证了所提方法在动态响应、谐波抑制和功率平衡方面的优越性能。该研究对标“顶级EI复现”标准,具备较强的学术深度与工程应用价值。; 适合人群:电气工程、自动化、电力电子与电力传动等专业的硕士/博士研究生、科研人员及从事新能源发电、智能电网、工业变流器研发的工程师,需具备电路理论、自动控制原理、电力电子技术及Simulink/MATLAB仿真基础。; 使用场景及目标:①深入理解电网不平衡工况下PWM整流器的运行机理与控制挑战;②掌握基于同步旋转坐标系的先进控制策略设计方法;③复现高水平期刊论文中的控制方案,支撑科研项目申报、学术论文撰写或实际工程开发。; 阅读建议:建议结合文中“顶级EI复现”要求,细致分析控制逻辑构建过程与关键参数整定方法,利用Simulink模型进行分模块调试与整体验证,重点关注负序电流抑制效果、直流侧电压稳定性及功率纹波指标,可进一步拓展至不同故障场景或多电平拓扑的对比研究。

概率神经网络的分类预测-基于PNN的变压器故障诊断(Matlab代码实现)

内容概要:本文档详细介绍了“Plecs全桥LLC谐振变换器仿真模型”,该模型基于Plecs平台构建,旨在精确模拟全桥LLC谐振变换器在各类工况下的动态行为,涵盖软开关过程、谐振参数变化对系统性能的影响等关键环节。LLC谐振变换器作为一种高效的电源转换拓扑,具有高效率、低电磁干扰等优势,广泛应用于现代电力电子系统中。本仿真模型不仅支持开环与闭环控制策略的设计与验证,还可用于优化谐振腔参数、分析启动过程及系统稳定性,有助于深入理解其工作机理并指导实际工程设计。此外,文档还列举了大量相关电力电子仿真资源,表明该模型属于一个综合性科研资料体系的一部分。; 适合人群:电力电子、自动化、电气工程及其相关专业的高校师生、科研人员,以及从事电源变换器设计与开发的工程技术人员。; 使用场景及目标:①用于教学与科研中对LLC谐振变换器工作原理的理解与验证;②辅助工程师进行变换器主电路参数设计、控制策略开发与系统性能优化;③作为复杂电力电子系统仿真研究的基础模块,支持进一步的功能扩展与集成。; 阅读建议:建议使用者结合Plecs官方手册与电力电子技术理论教材同步学习,重点关注谐振频率设定、软开关实现条件、磁性元件参数匹配及闭环控制器设计,通过调整仿真参数观察系统响应变化,深化对理论知识的实际应用与掌握。

单相boost功率因数校正 PFC电路仿真(Simulink仿真实现)

内容概要:本文档系统介绍了基于Simulink平台的单相boost型功率因数校正(PFC)电路仿真资源,重点实现双闭环PWM控制策略下的电路建模与仿真分析。通过构建主电路拓扑、设计电压外环与电流内环的协同控制结构,结合PWM调制技术,验证boost型PFC在提升功率因数、抑制电流谐波方面的有效性。内容涵盖系统动态响应特性、控制环路参数整定方法及仿真调试过程,深入剖析PFC的工作原理与工程实现细节,为电力电子变换器的高性能控制提供实践参考。; 适合人群:具备电力电子、自动控制理论基础,从事电源设计、新能源变换系统及相关领域的研究生、科研人员和技术工程师;熟悉Simulink仿真环境者更佳。; 使用场景及目标:① 掌握boost型PFC电路的基本架构与工作机理;② 实践双闭环控制策略在功率因数校正中的具体应用;③ 在Simulink中完成控制系统建模、参数优化与仿真验证,强化实际工程设计能力;④ 为高效率AC-DC变换器、电动汽车充电系统等先进电力电子系统的研发奠定技术基础。; 阅读建议:建议结合文档中提供的其他相关仿真资源(如LLC谐振变换器、PWM整流器等)进行系统性学习,重点关注控制环路的设计逻辑与仿真调试流程,并通过调整控制器参数观察系统响应变化,从而深入理解PFC的动态调节机制与稳定性特征。

MATLAB实战:手把手教你搭建构网逆变器同步稳定性仿真模型(附避坑指南)

本文详细介绍了如何在MATLAB/Simulink平台上搭建构网逆变器同步稳定性仿真模型,涵盖从基础模块配置到虚拟同步机控制实现的完整流程。针对电力电子工程师常见的控制参数整定困难、仿真结果偏差等问题,提供了LCL滤波器谐振抑制、虚拟惯量优化等关键技术解决方案,并附有避坑指南和工程实践技巧,助力研究者高效完成仿真建模。

weixin_29051193的博客 297
上一篇: 语法糖(糖衣语法)
下一篇: 解决iOS模拟器运行时上下出现黑边的问题
CoderZG
博客等级 码龄12年 0粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值