自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 对于网络知识的梳理(TCP/UDP/HTTP/HTTPS/DNS)

首先从http协议说起,先附上两张图,分别是网上找的请求报文与响应报文的示例图:请求报文:由此可以看出,请求报文的结构为:第一行(第一部分):请求方法,请求地址URL,协议版本(一般为HTTP/1.1)第二部分:首部字段名与其对应值的区域,例如code、cookie、content-type等第三部分:实体主体,就是装载我们实体请求内容主体的地方这三部分构成了请求报文的...

2018-09-25 22:30:15 582

原创 对iOS中RunLoop的归纳总结

首先对于RunLoop这个概念,大家都听过,但对其认识都是比较抽象的,只知道其存在于遥远的main函数中,而在开发中如何合理使用runloop,以及对runloop的基本数据类型与定义都不是很清楚,这篇文章就总结一下自己对于runloop的理解。在iOS开发中,runloop是一个通过事件循环来对消息或者事件进行管理的一个对象,在没有消息需要处理时,进行休眠以避免资源浪费,在有消息需要被处理时...

2018-09-17 21:21:06 502

原创 探究iOS中Block的本质

在ios开发中block代码块是一个非常实用东西,block给程序开发提供了非常多的便捷之处。这篇文章就对于block的本质进行一些讨论。首先明确一个概念,什么是block——block是将函数及其执行上下文封装起来的一个对象。在block实现的内部,有很多变量,因为block也是一个对象,那肯定也是之前文章中说过的Objc_object类的一个子类。其中包含了诸如isa指针,imp指针等对象...

2018-09-16 23:55:48 457

原创 iOS循环引用梳理

总结梳理一下循环引用相关的知识点。循环引用分三种:1.自循环引用,2.相互循环引用,3.多循环引用,这三种就不多介绍了,是个程序员都明白。循环引用出现的地方多数是在,block,NSTimer中,代理中如果代理对象没有设置为weak也会产生循环引用。破环的方法无非是将一方引用的方式改为弱引用,但在OC中,引用一个对象而不增加其引用计数一共有三种关键字可以实现:1.weak,2.bloc...

2018-09-12 16:19:57 212

原创 关于对iOS中自动释放池autoreleasepool的一些理解

因为现在大家都在使用ARC模式下进行编程,一个很重要的问题也是最容易被大家所忽视的问题就是自动释放池,大部分程序员尤其是刚入行的都只是知道有这么一个东西,但具体是什么,工作的原理是什么,在什么时候使用它都一概不知。所以写一篇文章,记录一下个人对自动释放池的一些理解。我们新建一个OC项目,在main函数中可以看到这么一串代码:int main(int argc, char * argv[])...

2018-09-12 12:05:58 367

原创 详解iOS内存管理机制内部原理

iOS中内存管理机制是开发中一项很重要的知识,了解iOS中内存管理的规则不管是在开发中还是在学习中都能很大程度的帮助我们提升效率。下面我就根据自己的理解,详细梳理一下内存管理相关的知识。在说内存管理之前,我们首先要了解什么内存。一块内存条,是一个从下至上地址依次递增的结构,内存条中主要分为几大类:栈区(stack)、堆区(heap)、常量区、代码区(.text)、保留区。常量区分为未初始化区域...

2018-09-11 10:33:00 2351

原创 分析runtime内部数据结构以及对消息传递原理的解析

一、介绍runtime中的数据结构首先在runtime中,有几个常用的数据类型结构体,objc_objcet、objc_class、isa指针类型、method_t、cached_t、class_data_bits_t、class_rw_t、class_ro_t。1.objc_object就是常见的在runtime中代表一个对象类型的结构体,其包含的内容有:1.isa_t数据结构类型的指针...

2018-09-03 11:42:21 282

原创 总结一下关于属性关键字的用法与区别

最近老有朋友问我一些关于OC中声明属性中关键字的细节使用,第一为了梳理下自己的思路为了日后好查找,第二为了省事就写一篇这个总结文章吧。声明一个属性的过程中,一共分三类关键字:读写权限关键字,原子性关键字以及引用计数关键字1.读写权限关键字:readonly,readwirte,默认是readwirte,顾名思义就不过多解释了2.原子性关键字:atomic,nonatomic,默认是at...

2018-08-29 17:27:30 362

原创 浅谈KVC

KVC是key-value-coding的缩写,顾名思义就是键值对编码的意思。KVC其中包含两个两个方法,-(id)valueForKey:(NSString*)key;与-(void)setValueForKey:(NSString*)key;当然还有其他两个keyPath的方法,keyPath更牛逼,功能更强大,其中还可以使用点语法,这里就不详细说明了。KVO内部的实现原理其实就是:有...

2018-08-29 17:13:18 1208

原创 浅谈KVO

KVO顾名思义是Key-value-observer的缩写,是ios中又一种机制,也是观察者设计模式的又一种实现,Apple使用了isa混写(isa-swizzling)的方式来实现KVO——所谓isa混写就是使用runtime实时更改对象的isa指针,使对象的isa指针指向不同的类,从而达到编写者需要实现的目的。在KVO中isa混写的实现流程:当向对象A增加一个observer观察者时,系统...

2018-08-29 16:54:56 226

原创 关于代理与通知的内部实现原理与区别对比

代理:是软件设计模式的一种(也可以说是用代理的设计模式实现的消息传递机制),以@protocol的形式体现,以一对一的方式传递信息。代理是以协议的方式连接委托方与代理方的,委托方通过代理定义需要实现的方法与选择实现的方法,由代理方实现,再由委托方调用代理方所实现的协议方法来实现代理的设计模式。通知:是一种使用观察者模式实现的跨层的消息传递机制,而通知的传递方式为一对多一般我们的项目中几...

2018-08-29 16:41:53 343

原创 使用关联对象技术添加属性的本质

上一篇文章提到了为分类增加属性使用的objc_setAssociate方法与objc_getAssociate方法关于使用这两个方法给分类添加属性的实质如下:首先分析objc_setAssociate方法中的四个参数:1.objcet,2.key,3.value,4policy首先明确一点,用关联对象创建的属性并不会存储在类的相关成员变量列表中,而是由AssociationsManag...

2018-08-28 16:51:19 408

原创 关于在ios中使用png与jpg图片的区别

关于png图片:1.png有透明通道, jpg没有.png有手机硬解码加速 无损显示效果好2.png加载速度快, 显示效果好3.xcode也会对png图片进行优化,而不会对jpg图片进行优化.4.png 在大图片的时候占用空间会比jpg大.关于jpg图片:1.高压缩率2.适合扫描使用...

2018-08-28 10:04:11 1465

原创 ios中关于分类认知的一些总结

在IOS中,分类是一个极其便捷的代码管理方式,通过使用分类可以取得以下好处:1.可以在.m文件中利用分类进行私有方法的添加,达到代码分类明确的作用2.将代码进行分类,分解体积过于庞大的文件3.将Framework的私有方法公开化4.便于团队作业的代码整合 分类的特征是运行时决议,所谓运行时决议便是在代码进行运行时,才将对应的方法、属性、协议等真正添加到宿主类中,使用分类可以...

2018-08-27 17:51:33 331

原创 ios事件传递原理——通过一次点击事件找到点击事件产生的视图

首先要明确两个方法- (nullable UIView *)hitTest:(CGPoint)point withEvent:(nullable UIEvent *)event;- (BOOL)pointInside:(CGPoint)point withEvent:(nullable UIEvent *)event;这两个方法是OC内部查找目标响应视图的两个方法首先一个总体的流程...

2018-08-23 11:30:15 806

转载 static静态变量的生命周期

静态变量的类型说明符是static。静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。对于自动变量,它属于动态存储方式。但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式。由此看来,一个变量可由static进行再说明,...

2018-08-22 10:46:34 633

翻译 OpenGL 纹理过滤模式中的Bilinear、Trilinear以及Anistropic Filtering

1、 为什么在纹理采样时需要texture filter(纹理过滤)。我们的纹理是要贴到三维图形表面的,而三维图形上的pixel中心和纹理上的texel中心并不一至(pixel不一定对应texture上的采样中心texel),大小也不一定一至。当纹理大于三维图形表面时,导至一个像素被映射到许多纹理像素上;当维理小于三维图形表面时,许多个象素都映射到同一纹理。当这些情况发生时,贴图就会变得模...

2018-08-17 18:05:56 868

原创 iOS关于指针的详解

指针这个概念对于大多数刚刚入行的ios开发者来说,都是一个极为容易混淆的问题,因为长期写swift项目,其实中对指针的概念弱化了很多,今天在看源码的时候发现自己对这个概念也晕头转向了,所以觉得有必要写一篇总结,提醒自己的同时希望也能对你有所帮助。吃完饭回来继续。...

2018-06-21 11:48:21 1522

原创 关于深拷贝浅拷贝(copy与strong)的一些理解

深拷贝就是把内容拷贝一份产生一份新的对象,新对象计数器为1,源对象计数器不变。而浅拷贝是指针拷贝,把地址给你,你和我指向同一个对象,源对象计数器加一,源对象和副本的计数器相同。我们知道在OC中的拷贝函数有copy和mutablecopy,只要你调用了copy不管是NSString, NSDictionary还是NSArray还是NSMutableString还是NSMutableDicti...

2018-06-20 14:51:22 311

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除