烟飞烟灭

好的文章,就是原来不懂得;看了之后有一种原来是这样的感觉!


  • 首页

  • 分类

  • 归档

  • 标签

  • 留言

浅拷贝与深拷贝

发表于 2019-06-12 14:38 | 更新于 2019-06-14 14:38 | 分类于 iOS | 阅读次数
字数统计 1.3k 字

浅拷贝和深拷贝

对象的(指针指向)内存地址

浅拷贝:
第一,拷贝了指向对象的指针,拷贝出来的对象的指针和原对象的指针指向同一块内存地址.
第二,几个对象共用一块内存,当内存被回收时候,指向这块内存的对象指针需要重新定义,不然会造成野指针错误.
深拷贝:
第一,拷贝对象的具体内容,开辟新的内存,内存地址自助分配.
第二,拷贝完成之后,内存中的值是一样的,但是内存地址不一样,2个对象之间相互不影响,也不相互干涉;

小结:用通俗话来讲,
浅拷贝就是一个人和他的影子,本体被销毁了,那么影子也不存在;

深拷贝就好比一个人和他的克隆人,本体被销毁了,克隆人依然存在;

额外知识:

野指针:当前对象指针指向的内存已经被回收,但是依然有其他对象的指针指向这块内存,那么指向这块内存的对象指针就是野指针;
内存泄漏:申请内存没有释放,造成内存越来越少;常见是block,delegate,NSTimer的使用不当造成的循环引用;

阅读全文 »

多线程之-NSOperation

发表于 2018-08-03 15:59 | 更新于 2018-08-14 17:49 | 阅读次数
字数统计 1.1k 字

NSOperation

1.和NSThread,GCD一样,NSOperation也是苹果提供的一套多线程并发编程方案;
2.它是对GCD在OC层面的一个封装,是完全面向对象的;
3.它比GCD多了一些更加实用的功能;
4.经常使用;
5.自动管理;

NSOperation用法

NSOperation是一个抽象类,在使用的时候,需要使用的是它的子类,并且有3种方式:

1.NSInvocationOperation类;
2.NSBlockOperation类;
3.继承于NSOperation的子类,重写main方法;

阅读全文 »

多线程之-GCD

发表于 2018-07-31 15:15 | 更新于 2021-08-10 15:59 | 分类于 iOS开发 | 阅读次数
字数统计 2.9k 字

理解GCD一些概念

队列:串行队列,执行完一个任务再执行下一个任务;并发队列,可以多个任务同时执行;
执行方式:同步方式,不开启新线程,在主线程执行;异步方式,开启新线程(当队列是主队列时,不开新线程);
最佳任务执行方案:异步方式+并发队列
多线程的死锁问题:不同队列的任务在相互等待完成;
耗时的任务应该放到后台去运行;

阅读全文 »

多线程之-NSThread

发表于 2018-07-20 11:03 | 更新于 2018-07-31 15:03 | 分类于 iOS开发 | 阅读次数
字数统计 891 字

进程和线程概念

1,进程:进程是计算机系统分配的单位,每个进程之间是相互独立的,如同时打开微信,QQ,那么就开启了2个进程;
2,线程:线程是进程的基本执行单位,进程中所有的任务都是在线程中执行的,每一个进程都必须存在并且只有一个主线程,允许存在多个子线程;
3,多线程:在不阻塞主线程情况下,充分利用CPU资源开启多个线程去执行耗时任务,优化app体验;

阅读全文 »

xcode10_beta:block内_出现self替换警告

发表于 2018-07-11 18:11 | 更新于 2019-06-12 15:50 | 分类于 xcode | 阅读次数
字数统计 47 字

新版本xcode10在使用block时,如果使用全局变量会出现:self->去替换_的警告;

处理:在Build Setting中设置Implicit retain of ‘self’ within blocks为NO;
如下图所示:
image

<1…678…15>
自由不可待

自由不可待

离文明世界有多远?

74 日志
17 分类
101 标签
Github
© 2017 - 2021 自由不可待
由 Hexo 强力驱动
主题 - NexT.Pisces