iOS 开发strong weak assign copy

本文深入解析iOS内存管理机制,包括对象引用计数器的工作原理、强引用与弱引用的区别及应用场景,以及copy关键字的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


    对象(继承自NSObject)内部都有一个内置的引用计数器,用来标识当前有多少对象在使用它,当对象被创建时,引用计数器为1,一旦引用计数器减到0,对象就会销毁,一般来讲,alloc函数创建对象,对象的引用计数器为1,retain会对引用计数器 +1,release会对引用计数器-1。 
strong 强引用:
    所谓强引用就是对对象计数器 +1 操作,多一个对象对该对象强引用,引用计数器就会+1,比如 A 对象对 B 对象强引用,B 对象的引用计数器就会 +1,这样当别的对象对B进行一次释放操作(计数器 -1),B对象也不会被释放。如果你想让引用的对象保证存在,请使用强引用。
注:强引用只是对原来对象的引用计数器 +1 ,原对象在内存中依然只有一份,若原对象的内容发生改变,强引用指针指向的内存中的内容也会跟着发生改变。
weak 弱引用
    弱引用不执行对象的计数器 +1 操作,比如 A 对象对 B 对象弱引用, B 对象的引用计数器不会 +1,若 B 对象计数器减为0,那么 B对象就真的释放了,A 对 B 的引用就会置空。如果你希望对象被释放后不再对它操作,弱引用是最好的选择。
copy 拷贝
    copy一般是对字符串的操作,就是将原对象重新拷贝一份到新的开辟的内存中,因为如果字符串是可变字符串,对它强引用,如果字符串内容改变,那么强引用指针指向的内存中得内容也会改变。一般我们对字符串的引用都是希望使用当前字符串的内容,而不是改变之后的内容。

@property (nonatomic, copy) NSString * str;

assign:自动放弃内存管理,一般用于基本数据类型和id指针。


    说点题外话,在这前一晚,姚贝娜的死讯传来,虽然说我挺喜欢听音乐啥的,但是对歌手从来都是一知半解,昨晚之前姚贝娜这个名字几乎都从未在我的记忆力停留过,但昨晚消息传出开始,从周围人对姚贝娜之死的各种扼腕惋惜,泣不成声的悲鸣中,我用了短短一天的时间,对姚贝娜有了360度的全方位认识,突然我意识到了一些问题。
第一,我们大多数人,往往都是等到身边的人或物失去的时候,才知道她的珍贵,比如毕加索,生前几乎一文不名,死后却成了腰缠万贯的土豪,可是有什么用呢?比如很多人都说好男儿志在四方,足遍五川,最终却子欲养而亲不待,遗憾终生,可是有什么用呢?
第二,一部分人都对姚贝娜的死感到可惜是因为他们真的喜欢姚贝娜的歌,或者喜欢姚贝娜本身,但是不排除有盲目随从的人。这类人往往缺乏主见,见周围人做什么,他就着急了,就想去凑个热闹,装个潮流。
第三,就是时下的媒体了,当你在为一个你尊崇的歌手哀悼时,或许有媒体背后正在为明天的头条加班加点,忙的不亦乐乎。
个人观点,不喜勿喷
OPCUA(OPC统一架构)是一种开放标准通信协议,用于工业自动化和其他领域的设备和系统之间的数据交换。它建立在 OPC Foundation 的基础之上,旨在替代早期的 OPC DA(OPC 数据访问),提供更安全、更高效且平台无关的通信方式。本压缩包“OPCUA与OPCServer通讯测试客户端程序.zip”包含了实现OPCUA客户端与OPCServer服务端通讯测试的相关资源。 1. OPCUA协议:OPCUA的核心特性在于它的服务导向架构,包括了数据访问、历史数据访问、报警和事件、方法调用等服务。它使用TCP/IP作为传输层,并支持SSL/TLS加密,确保数据传输的安全性。OPCUA还引入了发布/订阅模型,允许实时数据流的高效传输。 2. OPCServer:OPCServer是OPCUA架构中的一个组件,通常由设备制造商或软件供应商提供,它将特定设备或系统的数据暴露给OPCUA客户端,使得多个应用程序可以共享这些数据。例如,KepServer是OPCServer的一种,它可以连接到各种PLC(可编程逻辑控制器)、SCADA系统和其他工业设备。 3. OPCUA客户端:客户端是使用OPCUA协议来访问OPCServer服务的应用程序。在这个压缩包中,提供的客户端程序应该能够发现OPCServer,建立安全连接,浏览OPCServer提供的节点结构,读取和写入数据,以及订阅变化。 4. OPCUA访问KepServer:KepServer是OPC基金会认证的服务器,支持OPCUA协议。通过OPCUA客户端,你可以与KepServer进行交互,获取或控制连接到KepServer的设备或系统的数据。这在设备监控、数据采集和自动化应用中非常常见。 5. 测试过程:通讯测试通常涉及以下步骤: - 安装和配置OPCServer(如KepServer)。 - 运行客户端程序,配置OPCServer的连接参数,包括地址、端口、认证信息等。 - 使用客户端发现OPCServer上的可用服务和数据节点。 - 测试读写操作,验证数据传输的正确性和实时性。 - 可能还包括性能测试,检查数据刷新速率和网络负载。 6. 遵循OPCUA标准:OPCUA提供了丰富的API和SDK,允许开发者创建符合标准的客户端和服务器应用。在实现OPCUA通讯时,必须遵循OPCUA的信息模型和接口定义,确保与其他OPCUA兼容设备的互操作性。 7. 安全性考虑:OPCUA内置了安全机制,如身份验证、授权和加密。客户端和服务器间的通信应配置适当的安全策略,以防止未授权访问和数据泄露。 通过这个压缩包,用户可以学习和实践如何建立和测试OPCUA客户端与OPCServer之间的通讯,这对于理解和开发基于OPCUA的工业自动化解决方案至关重要。同时,对于那些需要集成不同设备或系统的项目,了解并掌握OPCUA技术是非常有价值的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值