IOS开发入门笔记

  • IB:IB是指Interface Builder,如IBAction,IBOutlet。
  • IBOutlet和IBAction是什么?
  • IBOutlet:中文翻译应该是:插座,连接点(书上写的是出口)。
  • autorelease相当于Qt中的deleteLater。
  • 所有的NSObject子类对象都有引用计数。
    NSObject指针或者引用计数对象(如NSString,在Qt中叫隐式数据共享)相当于C++中的shared_ptr,以及Qt中的QSharedPointer。
  • iOS中copy,strong,retain,weak和assign的区别

赋值分为:基本类型赋值,对象指针赋值,对象赋值。

基本类型赋值是值拷贝,内存在栈上。
对象涉及到引用传递问题。

为什么对象要使用引用?因为基本类型的值拷贝速度快,可以直接进行值拷贝。但是对象是数据和方法的集合,出于性能考虑,不能用值拷贝,要用对象引用。对象在堆上创建,在栈上被引用。

引用传递存在的问题是如何保证堆内存合理释放:既要防止出现空指针导致程序崩溃,也要防止内存泄漏影响系统。

所以指针赋值时,为了防止出现空指针,需要进行引用传递,防止一个指针释放了内存,导致其他指针成为“悬挂指针”;为了防止内存泄漏,需要在赋值前先释放被赋值指针指向对象的引用,再进行赋值。最后,如果要获取对新对象的引用,此指针就相当于强指针,如果不获取对新对象的引用,此指针就相当于弱指针。

赋值主要影响setter函数的生成内容。下面分别说明。

assign:基本数据类型的值拷贝,不涉及引用问题。
copy:参考 https://blog.csdn.net/miaogehehe/article/details/80591805,
weak:相当于C++中的弱指针,被赋值时,不增加等号右边对象的引用计数,不负责释放内存。当其指向的对象被释放后,此指针自动置为NULL,不会出现野指针。
strong:相当于C++中的强指针。被赋值时,增加等号右边对象的引用计数,参与负责释放内存。当其指向的对象被释放后,此指针自动置为NULL,不会出现野指针。
retain:参考 https://www.cnblogs.com/jw-blog/p/5526655.html

  • objective c只能在堆上创建对象,在栈上使用指针引用。参考:https://blog.csdn.net/Philm_iOS/article/details/81200510。

写一百个字不如一张图,OC中数据或对象在内存中的分布图如下:
请添加图片描述

把内存分布弄清楚以后,理解内存管理也不是难事。

  • first responder:中文翻译为第一响应者,实际上就是windows中的当前焦点所在的控件。

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

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

相关文章

【转】RabbitMQ六种队列模式-3.发布订阅模式

前言 RabbitMQ六种队列模式-简单队列RabbitMQ六种队列模式-工作队列RabbitMQ六种队列模式-发布订阅 [本文]RabbitMQ六种队列模式-路由模式RabbitMQ六种队列模式-主题模式 上文的工作队列模式是直接在生产者与消费者里声明好一个队列,这种情况下消息只会对应同类型的…

组建一个局域网一般会用到哪些设备_路由器和交换机的区别是什么?在实际使用中有哪些不同...

电工之家:www.dgzj.com QQ群:2179090关注电工之家官方微信公众号“电工之家”,收获更多经验知识。其实关于路由器和交换机确实有很多人容易混淆,包括猫MOdem,我最初就认为猫就是路由器,现在回想起来真的傻…

【转】RabbitMQ六种队列模式-4.路由模式

前言 RabbitMQ六种队列模式-简单队列RabbitMQ六种队列模式-工作队列RabbitMQ六种队列模式-发布订阅RabbitMQ六种队列模式-路由模式 [本文]RabbitMQ六种队列模式-主题模式 本文带大家了解 RabbitMQ 队列模式中的路由模式。 其实只要看过上篇发布模式后,相信路由模式…

百度二年级手工机器人_让父母少弯腰的家务神器——追觅扫拖机器人慧目F9评测...

大家好,我是CC。父母都已过了花甲之年,退休在家本应是享清福的时候,为了照顾双上班族的我,平时承担了接儿子放学和给我蹭晚餐的任务,操劳不少。眼看着他们一点点老去,总想也为他们做点什么,所以…

【转】RabbitMQ六种队列模式-5.主题模式

前言 RabbitMQ六种队列模式-简单队列RabbitMQ六种队列模式-工作队列RabbitMQ六种队列模式-发布订阅RabbitMQ六种队列模式-路由模式RabbitMQ六种队列模式-主题模式 [本文] 从前面的几篇我们依次经历了 exchange 模式从 fanout > direct 的转变过程,在 fanout 时&a…

javase哪部分最难_高中物理哪部分最难?这里有答案和方法!一定要收藏

高中物理最难的部分是什么?对于大多数同学来说,电粒子在电磁场中的运动、动力学分析以及电学实验比较难搞定,看看下面的方法,希望对你有所帮助。从应试而言,应是带电粒子在电磁场中的运动(力,运动轨迹,几何…

【转】分布式websocket服务器

最近在开发一个游戏的客服系统,同一时间咨询问题的玩家多,为了保证服务器高可用,需要利用分布式,另外服务器宕机还需要玩家无感知重连,最关键的一点是如何实现服务器的高扩展性,即性能不足时,如…

【Rational Rose使用笔记】协作图

例题 用例题亲自画一下是最好的。 例题出处:掌握在Rational Rose中绘制协作图(交互图)的操作方法 其他参考文章: UML–协作图详解UML中创建对象的方法:Rational Rose建立对象图 笔记 以下是总结的一些笔记&#x…

【Rational Rose使用笔记】用例图

一 先找例题: 掌握运用Rose工具绘制用例图的基本操作 再学习: UML建模——用例图(Use Case Diagram) 二 下面是笔记: 了解几种关系:依赖、关联、泛化、包含、扩展。 如何区别依赖、关联? 依…

sqlserver获取当前时间_c#获取并显示当前日期时间

主要使用ToLongDateString、ToShortDateString、ToLongTimeString、ToShortTimeString、DayOfWeek等获取日期、时间、星期等数据。MM 两位数月份mm 两位数分钟HH 两位小时,24小时制hh 两位小时,12小时制string br ""; string a1 D…

【考研计算机】AOE关键路径

介绍 数据结构AOE网 计算题专题:关键路径法(CPM) 需要注意的点: 最重要的点,以下图为例: 一个活动有多个入口,这是表示此活动必须在前置的多个入口都完成时,才能开始。 即,开始条件 入口1 &…

【转】.NET程序内存分析工具CLRProfiler的使用

大家都知道.net有一套自己的内存(垃圾)回收机制,除非有一些数据(方法)长期占有内存不随着垃圾回收功能而释放内存,这样就造成了我们经常说的内存泄露、内存持续增长得不到释放等问题导致APS.net网站或者C/S…

sql over函数_SQL 高级函数

今天是高端局,都是超级高大上的内容,惯例上目录今天觉得红黑配色好好看呀今天没有什么具体的栗子合集,大家的应用场景都很不一样,so,到具体知识点,我们再具体举栗子。窗口函数概念: 窗口函数&am…

【转】SVN各种颜色状态

黄色感叹号(有冲突): 这是有冲突了,冲突就是说你对某个文件进行了修改,别人也对这个文件进行了修改,别人抢在你提交之前先提交了,这时你再提交就会被提示发生冲突,而不允许你提交,防止你的提交覆盖了别人的…

实现二分归并排序算法_如何实现归并排序?

归并排序归并排序是分而治之的排序算法。划分步骤很简单:将当前数组分成两半(如果N是偶数,则将其完全平等,或者如果N是奇数,则一边稍大于一个元素),然后递归地对这两半进行排序。递归写法归并排序递归写法的思想是&…

【手算】逆序数树形计算方法

计算过程: 给定一列数,从左向右,依次将每个数拿出来,作为一棵树的树根。从剩下的数中,找比此数小的数,作为子节点加入到树中。重复1、2,直到到达最后一个数停止。 数出二级节点,即…

【转】SVN冲突出现场景

如今是一个团结协作的时代,开发一个系统,往往会多人协作共同完成。版本管理是必不可少的,常用的软件有Git,SVN等。今天说一下,SVN管理版本时,如果出现冲突后,如何快速解决冲突。 首先说明一个问…

Qt Creator和Visual Studio双环境开发技能攻略

前言 刚接触Qt开发时,大多数同学的第一行Qt代码是在Qt Creator中写下的。 众所周知,Qt Creator是Qt官方提供的Qt集成开发环境1,提供了对Qt应用开发的全过程支持。也就是说,使用Qt Creator做Qt开发是完全够用的。不管是在Windows…

大疆无人机高程不准_大疆消费级无人机快速倾斜摄影测量实践

摘要:分别用 RTK两种测量模式测定像控点,用大疆消费级无人机 Phantom4PRO 开展倾斜摄影测量,最后进行成果检验。结果表明:RTK 电台模式(不做坐标校正,精度低)、RTK-CORS 网络模式测定像控点都能…

【转】CLR Profiler 性能分析工具 (转)

最近关注程序性能的优化方面,本想写篇CLRProfiler的简要文档,看到pengpeng已写好,那就转载好了,偷偷懒。 .Net的尽管拥有非常强大调试器,但也有很多局限性,只限于CLR之上,无法得到CLR的具体细节…