六月份即将结束,咬咬牙也得把之前盛产似母猪的🐂给吹完~ 继续来吧~ 干完这篇,估计看看状态吧,得休息休息了_ 前言 因为Flutter2.0已经出来很久了,空安全(N...
六月份即将结束,咬咬牙也得把之前盛产似母猪的🐂给吹完~ 继续来吧~ 干完这篇,估计看看状态吧,得休息休息了_ 前言 因为Flutter2.0已经出来很久了,空安全(N...
读写锁是计算机程序的并发控制的一种同步机制,也称“共享-互斥锁”、多读者-单写者锁。读操作可并发重入,写操作是互斥的。 实现原理 两把互斥锁 使用两把互斥锁与一个整数计数器实...
在x86的计算机系统中,内存空间中的栈主要用于保存函数的参数,返回值,返回地址,本地变量等。一切的函数调用都要将不同的数据、地址压入或者弹出栈。因此,为了更好地理解函数的调用...
引言 相信初接触到CALayer的人都会遇到以下几个问题: 为什么修改anchorPoint会移动layer的位置? CALayer的position点是哪一点呢? anch...
第三题,"所以按viewDidLoad执行时各个变量入栈顺序从高到底为self, _cmd, super_class(等同于self.class), receiver(等同于self), obj。",[super viewDidload]调用之后参数应该是会出栈才对的吧,objc_msgSendSuper2的参数不会出栈?这里有点理解不了。
博客链接深入理解GCD之dispatch_group 之前已经介绍了dispatch_semaphore的底层实现,dispatch_group的实现是基于前者的。在看源码之...
成因 野指针就是指向一个已删除的对象或者受限内存区域的指针。我们写C++的时候强调指针初始化为NULL,强调用完后也为其赋值为NULL,谁分配的谁回收,来避免野指针的问题。比...
没有不会crash的app包括微信没有不会crash的代码即使正常运行千年只要有会看crash的程序猿 这一周是在不同的crash日志分析中度过的,公司的4个项目依次出现不同...
OC初级赋值错误 还记得我们在修改一个view的size的时候经常是这么写的: 为什么不直接赋值呢?像这样呢 可知会报以下错误 在gcc下会抛出以下错误: 有没有仔细想过为什...
概述 写代码就是在不断填坑的过程中慢慢成长,程序员哪有不遇坑的呢? 这篇文章来谈谈iOS中横竖屏切换的一些坑,横竖屏切换在App中很常见,本来我也以为做这个功能是很简单的一件...
引题 先抛出一道测试题,也许不少同学可能见到过类似的 最后打印结果?以下是.h .m文件 打印结果: 有不清楚迷惑的想要理解上面的原理,需要弄懂大概以下几点,如果很清楚的可以...
声明:原创作品,转载请注明出处//www.greatytc.com/p/afe090b2e19c 建造者模式是日常开发中比较常见的设计模式,它的主要作用就是将复杂事...
对作者积极学习、善于总结的态度我表示钦佩,值得我学习。对于MetaClass我发表下自己的粗浅理解,不对之处还请指教。对象内部都有一个isa指针指向自己的类对象,类对象中存放本对象独有的属性、方法。类对象中又有一个isa指针指向元对象,元对象中存放的是类方法。我们知道对象是独立的,每个对象都会有自己独立的内存空间,自然它的属性、方法应该也是特有的。而类方法属于类,类方法对于所有的对象是共享的,它只需要在内存中存在一份。其实我们不用想那么复杂,简单的理解这么设计,就是结构清晰、数据安全、内存节省。
JS中的prototype跟这个有点类似,它这个是把prototype中定义的属性和方法都属于类,只有构造方法中的属性、方法才是单独属于每个实例对象,也是出于以上几点考虑,个性的、私有的属于自己的,公用的属于类。
%p 作用:输出内存地址 使用: 结果: 解释: 1、前者是字符串 "xxxx" 内存首地址2、后者是指针name 内存首地址 二级指针 解释:指向指针的指针 举例:NSSt...
elf文件中的.bss段,存放未初始化的全局变量,将.data和.bss分开的理由是为了节约磁盘空间,.bss不占实际的磁盘空间,为什么.bss不占磁盘空间呢? 这里编写了一...
栈先进先出。。。 扒来前先想想正确性
BSS段 data段 text段 堆heap 和 栈stack1.可执行程序包括BSS段、[数据段]、[代码段](也称文本段)。 BSS(Block Started by Symbol)通常是指用来存放程序中未初始化的[全局变量]和[静...