【IOS】oc中property属性值详解

news/发布时间2024/5/15 5:34:38

1. atomic与nonatomic

  • atomic:原子属性确保属性的读取和写入操作在多线程环境中是线程安全的。这意味着,当一个线程正在读取或写入属性时,其他线程不能同时访问该属性。虽然这提供了线程安全性,但它也引入了性能开销,因为每次访问都需要加锁和解锁。
  • nonatomic:非原子属性不提供线程安全性。多个线程可以同时访问和修改同一属性,这可能导致数据不一致。然而,非原子属性通常具有更高的性能,因为它们不需要加锁。

2. assign、retain与copy

  • assign:该属性通常用于基本数据类型(如int、float、BOOL等)和C指针。对于OC对象类型,assign只是简单地将指针值赋给属性,不会增加对象的引用计数。这意味着,如果对象被释放,而指针仍然保留,则会出现悬挂指针。
  • retain:该属性用于OC对象类型。当属性设置为一个对象时,该对象的引用计数会增加。当属性设置为nil或另一个对象时,之前的对象的引用计数会减少。这有助于防止内存泄漏,但可能会增加内存使用。
  • copy:该属性也用于OC对象类型,特别是可变对象(如NSMutableArray、NSMutableString等)。当属性设置为一个对象时,会创建一个该对象的不可变副本,并将属性设置为该副本。这有助于防止外部对象修改属性的值,但可能会增加内存使用。

3. strong与weak

  • strong:强引用表示属性对其拥有的对象具有所有权。当属性设置为一个对象时,对象的引用计数会增加。当属性被释放或设置为另一个对象时,之前的对象的引用计数会减少。如果引用计数降为0,对象将被释放。
  • weak:弱引用表示属性对其拥有的对象没有所有权。当对象被释放时,属性的值会自动设置为nil。这有助于防止循环引用,但需要注意的是,如果对象被释放,弱引用属性将不再有效。

4. readonly与readwrite

  • readonly:只读属性意味着属性只能被读取,不能被修改。这可以通过在属性声明中添加readonly关键字来实现。只读属性通常用于表示对象的常量状态。
  • readwrite:读写属性允许属性的读取和修改。这是属性的默认行为,可以在属性声明中省略。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.bcls.cn/vfIx/1429.shtml

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

数据结构-邻接链表

介绍 邻接矩阵是运用较多的一种储存图的方法,但如果一张网图边数较少,就会出现二维矩阵中大部分数据为0的情况,浪费储存空间 为了避免空间浪费,也可以采用数组与链表结合的方式来存储图 假设有这样一张图 我们可以先用一个数组…

ConnectionRefusedError: [Errno 10061] Connect call failed (‘127.0.0.1‘, 6379)

错误描述 在websocket通信时,报错ConnectionRefusedError: [Errno 10061] Connect call failed (127.0.0.1, 6379) 原因分析 是因为利用django-channels实现websocket通讯时,设置了redis服务器,但是运行时没有启动redis服务器 解决方法 …

基于情感分析的网上图书推荐系统

项目:基于情感分析的网上图书推荐系统 摘 要 基于网络爬虫的数据可视化服务系统是一种能自动从网络上收集信息的工具,可根据用户的需求定向采集特定数据信息的工具,本项目通过研究爬取网上商品评论信息实现商品评论的情感分析系统功能。对于…

【Go语言】Go语言中的变量和常量

Go语言中的变量和常量 1 变量 变量相当于是对一块数据存储空间的命名,程序可以通过定义一个变量来申请一块数据存储空间,之后可以通过引用变量名来使用这块存储空间。 Go 语言是强类型静态语言,所以变量的声明与赋值方式与 PHP/Python 等动…

掌上新闻随心播控,HarmonyOS SDK助力新浪新闻打造精致易用的资讯服务新体验

原生智能是HarmonyOS NEXT的核心亮点之一,依托HarmonyOS SDK丰富全面的开放能力,开发者只需通过几行代码,即可快速实现AI功能。新浪新闻作为鸿蒙原生应用开发的先行者之一,从有声资讯入手,将基于Speech Kit朗读控件上线…

【漏洞复现-通达OA】通达OA get_file.php 任意文件下载漏洞

一、漏洞简介 通达OA get_file.php文件存在任意文件下载漏洞,攻击者通过漏洞可以读取服务器敏感文件。 二、影响版本 ● 通达OA2011 三、资产测绘 ● hunterapp.name"通达 OA" ● 特征 四、漏洞复现 GET /module/AIP/get_file.php?MODULE/&A…

新增长100人研讨会:快消零售专场探讨招商加盟数字化转型实战

2024年2月2日下午,一场由纷享销客与杨国福集团联合主办的招商加盟数字化转型研讨会在上海成功举办。本次研讨会汇聚了众多快消零售业界的领军人物,共同探讨行业未来的新增长点。 会议伊始,杨国福集团数字化中心负责人王林林发表了主题演讲&a…

Redis(十四)双写一致性工程案例

文章目录 问题概述canal功能安装部署mysql配置canal服务端canal客户端(Java程序) 问题概述 canal https://github.com/alibaba/canal 功能 数据库镜像数据库实时备份索引构建和实时维护(拆分异构索引、倒排索引等)业务 cache 刷新带业务逻辑的增量数据…

互联网加竞赛 大数据商城人流数据分析与可视化 - python 大数据分析

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于大数据的基站数据分析与可视化 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度…

Maven的初步认识

Maven 1,Maven 简介 Maven是Apache软件基金会的一个开源项目,是一个优秀的项目构建工具,他用来帮助开发者管理项目中的jar包以及jar之间的依赖关系,完成项目的编译,测试,打包发布等工作. Maven中的概念 pom(Project Object Model 项目对象模型) maven 管理项目的根目录下 都…

解决ubuntu登录密码问题

解决ubuntu登录密码问题 不要随便删除密码,不要随便改密码,很容导致密码过期,或者密码无效。参考了很多人的做法,都没有得到解决。下面的过程,够详细了,我就是这么搞好的。 1、重启虚拟机,不停…

[游戏开发][虚幻5]新建项目注意事项

鼠标右键点击Client.uproject文件,可以看到三个比较关键的选项, 启动游戏,生成sln解决方案,切换引擎版本 断点调试 C代码重要步骤 如果你想断点调试C代码,则必须使用使用代码编译启动引擎,你需要做几个操作…

护眼大路灯哪个牌子好?专家推荐榜单助你挑选最适合的大路灯!

在光环境不良的情况下,长期的近距离看书和使用电子设备确实是容易导致视力下降,而视力问题的出现给孩子的学习生活带来了很大的不便。因此,选择一款好用的大路灯能够帮助孩子减少用眼伤害,但面对现在市场上的众多大路灯品牌&#…

SQL-Labs靶场“11-15”关通关教程

君衍. 一、十一关 基于POST单引号字符型注入1、源码分析2、联合查询注入3、报错注入 二、十二关 基于POST双引号字符型注入1、源码分析2、联合查询注入3、报错注入 三、十三关 基于POST单引号报错注入变形1、源码分析2、报错注入 四、十四关 基于POST双引号报错注入1、源码分析…

Docker Compose详解

Docker Compose详解 1.概述2.安装3.基本使用4.命令说明5.Compose 模板文件6.使用Docker快速安装wordpress 1.概述 Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排 使用一个 Dockerfile 模板文件,可以让用户很方便的定义一…

MySQL数据库

MySQL数据库 一、MySQL数据库入门 1.初识数据库 ​ 数据库(DataBase,DB)是一个存在于计算机存储设备上的数据集合,它可以简单地理解为一种存储数据地仓库。数据库能够长期、高效地管理和存储数据,其主要目的是能够存储&#xf…

Web服务器基础

Web服务器基础 【一】前端概述 【1】HTML HTML(超文本标记语言)是用于创建网页结构的标记语言。它定义了网页的骨架,包括标题、段落、列表、链接等元素,但没有样式。可以将HTML视为网页的结构和内容的描述。 【2】CSS css&…

【Qt学习】QWidget的font属性 与 toolTip属性 的介绍与实例使用

文章目录 1. font属性1.1 介绍1.2 使用实例1.3 代码资源 2. toolTip属性2.1 介绍2.2 使用实例代码资源 1. font属性 1.1 介绍 上面是Qt的官方文档,我们据此进行总结: font(字体):表示当前为该控件设置的字体。 我们…

密码学基础

一、密码学的基本概念 1.1 密码学的作用 密码学是为了保障信息安全而发展起来的一门学科。为了解决信息安全所面临的危险,研究出了许多应对这些威胁的密码技术,“密码技术”是保障信息安全的基本技术。 信息安全的基本属性: 机密性&#…

Linux用到的命令

1 压缩文件 tar -czf wonderful.tar.gz pm 这个命令的作用就是创建一个以.tar.gz结尾的包文件,然后调用gzip程序将当前目录下的pm文件夹压缩到这个以.tar.gz结尾的文件里面去
推荐文章