iOS中self.xxx 和 _xxx 下划线的区别

property (nonatomic,copy) NSString *propertyName; self.propertyName 是对属性的拜访; _propertyName 是对部分变量的拜访。 其1、@property的声明中,编译器正在天生g] 


@property (nonatomic,copy) NSString *propertyName;

self.propertyName 是对属性的访问;

_propertyName 是对局部变量的访问。

其一、@property的声明中,编译器在生成getter,setter方法时是有优先级的,它首先查找当前的类中用户是否已定义属性的getter,setter方法,如果有,则编译器会跳过,不会再生成,使用用户定义的方法。 

也就是说你在使用self.propertyName 时是在调用一个getter方法。

self.propertyName 会让计数器+1;

其二、_propertyName,是直接调用变量,不通过getter方法。  

_propertyName是类似于self->_propertyName。

用self.propertyName 是更好的选择,因为这样可以兼容懒加载,同时也避免了使用下划线的时候忽视了self这个指针,后者容易在block中造成循环引用。

同时,使用 _是获取不到父类的属性,因为它只是对局部变量的访问。

最后总结:self方法实际上是用了get和set方法间接调用,下划线方法是直接对变量操作。

转载于:https://www.cnblogs.com/lihaibo-Leao/p/5539622.html

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

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

相关文章

python解释器的工作原理_Python GIL全局解释器锁详解(深度剖析)

通过前面的学习,我们了解了 Pyton 并发编程的特性以及什么是多线程编程。其实除此之外,Python 多线程还有一个很重要的知识点,就是本节要讲的 GIL。 GIL,中文译为全局解释器锁。在讲解 GIL 之前,首先通过一个例子来直观…

Chapter7-12_Controllable Chatbot

文章目录1 Chatbot面临的问题2 控制Chatbot的输出2.1 直接Finetune2.2 输入添加控制特征2.3 只有独白3 展望本文为李弘毅老师【Controllable Chatbot】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。 下文中用到的图片均来自于李宏毅老…

(翻译)Google Guava Cache

翻译自Google Guava Cache This Post is a continuation of my series on Google Guava, this time covering Guava Cache. Guava Cache offers more flexibility and power than either a HashMap or ConcurrentHashMap, but is not as heavy as using EHCache or Memcached (…

十三、PHP框架Laravel学习笔记——构造器的 where 派生查询

一.where 派生查询 orWhere()方法,可以通过连缀实现两个或以上的 or 条件查询; //where() orWhere 实现 or 条件查询 $users DB::table(users) ->where(price, >, 95) ->orWhere(gender, 女) ->toSql(); 通过闭包&#xff0…

go int 转char_GO语言实现 一 栈和队列

线性表中,栈和队列是非常重要的两种数据结构,本文将就这两种数据结构进行 golang语言实现参考:go语言中文文档:www.topgoer.com转自:https://www.jianshu.com/p/e8de9ac93cbc一.栈的实现我们需要实现如下几个方法push(…

Chapter7-13_Dialogue State Tracking (as Question Answering)

文章目录1 什么是Dialogue State Tracking2 数据集3 两个挑战4 经典模型本文为李弘毅老师【Dialogue State Tracking (as Question Answering)】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。 下文中用到的图片均来自于李宏毅老师的PP…

Migrate Instance 操作详解 - 每天5分钟玩转 OpenStack(40)

Migrate 操作的作用是将 instance 从当前的计算节点迁移到其他节点上。 Migrate 不要求源和目标节点必须共享存储,当然共享存储也是可以的。 Migrate 前必须满足一个条件:计算节点间需要配置 nova 用户无密码访问。 下面是 Migrate instance 的流程图 …

十四、PHP框架Laravel学习笔记——构造器的排序分组、子查询

一.排序分组 使用 whereColumn()方法实现两个字段相等的查询结果; //判断两个相等的字段,同样支持 orWhereColumn() //支持符号create_time,>, update_time //支持符号支持数组多个字段格式[create_time,>, update_time] $users …

python找不到文件怎么办_python open找不到文件怎么办?

推荐教程:《python视频教程》 python open找不到文件怎么办? python open找不到文件的解决办法: 在python和很多程序语言中"\"转义符号,要想输出\有两种方法,一是多加一个\写成\\ ,一是在字符串前加一个r,提…

css:蓝环章鱼

css&#xff1a;蓝环章鱼 许多海洋生物色彩艳丽&#xff0c;这次用css仿制一下蓝环章鱼的蓝环 <script type"text/javascript" src"http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script> <script type"text/javascript&quo…

论文阅读 - Jukebox: A Generative Model for Music

文章目录1 概述2 什么是VQ-VAE2.1 Auto-encoder(AE)2.2 Variational AutoEncoder(VAE)2.3 Vector-Quantized Variational AutoEncoder(VQ-VAE)2.4 VQ-VAE-23 Music VQ-VAE4 Prior and upsamplers5 Lyrics Conditioning参考文献By learning to produce the data, we can learn t…

十五、PHP框架Laravel学习笔记——构造器的 join 查询

一&#xff0e;join 查询 使用 join 实现内联接的多表查询&#xff0c;比如三张表进行 inner join 查询&#xff1b; $users DB::table(users) ->join(books, users.id, , books.user_id) ->join(profiles, users.id, , profiles.user_id) ->select(users.id, user…

MySql5.7.12设置log-bin

什么是binlog日志 binlog日志记录了MySql数据库的增加、删除、修改操作。用来实现MySql主从复制。 设置binlog日志 在my.cnf中配置binlog日志 [mysqld] log-bin/var/lib/mysql/logs/mysql-bin  # 开启并且设定日志文件前缀&#xff0c;必须执行 server-id81  # 指定服务器i…

python一键清屏_python添加清屏功能

创建文件ClearWindow添加内容 class ClearWindow: menudefs [ (options, [None, (Clear Shell Window, <>), ]),] def __init__(self, editwin): self.editwin editwin self.text self.editwin.text self.text.bind("<>", self.clear_window) def cle…

论文阅读 - Group Normalization

文章目录1 概述2 几种normalization的方法2.1 Batch Norm2.2 Layer Norm2.3 Instance Norm2.4 Group Norm3 效果对比参考文献1 概述 Group Nomralization的提出是为了解决一张GPU上能容纳的batch_size很小&#xff0c;导致模型训练效果显著变差的问题。随着深度学习的快速发展…

十六、PHP框架Laravel学习笔记——构造器的增删改

一&#xff0e;增删改操作 使用 insert()方法可以新增一条或多条记录&#xff1b; //新增一条记录 DB::table(users)->insert([ username > 李白, password > 123456, email > libai163.com, details > 123 ]); //新增多条记录 DB::table(users)->insert…

git如何切换分支_拜托,不要再问我Git分支如何使用

今天来讲讲我使用Git分支的一些经验&#xff0c;记录一下&#xff0c;希望对大家有帮助。阐述在平常开发中&#xff0c;一般都会对应三种环境&#xff0c;本地环境、测试环境、线上环境。开发的基本流程都是先在本地环境开发好,再把代码发布到测试环境测试&#xff0c;最后再发…

搞懂HMM

文章目录1 概述2 符号说明3 两点假设4 Evaluation4.1 前向算法&#xff08;forward algorithm&#xff09;4.2 后向算法&#xff08;backward algorithm&#xff09;5 Learning6 Decoding参考资料1 概述 本文是B站上机器学习-白板推导系列(十四)-隐马尔可夫模型HMM的学习笔记&…

书店售书最低价格问题

书店针对《哈利波特》系列书籍进行促销活动&#xff0c;一共5卷&#xff0c;用编号0、1、2、3、4表示&#xff0c;单独一卷售价8元&#xff0c; 具体折扣如下所示&#xff1a;本数 折扣 2 5% 3 10% 4 …

十七、PHP框架Laravel学习笔记——模型的定义

一&#xff0e;默认设置 框架可以使用 Eloquent ORM 进行数据库交互&#xff0c;也就是关系对象模型&#xff1b; 在数据库入门阶段&#xff0c;我们已经创建了一个 User.php 模型&#xff0c;如下&#xff1a; php artisan make:model Http/Models/User //默认在 app 目录 …