自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(241)
  • 资源 (7)
  • 收藏
  • 关注

原创 iOS 扩展(Extension)

一、扩展的作用声明私有属性声明私有方法声明私有成员变量二、扩展的特点编译时决议只以声明的形式存在,多数情况下寄生在宿主类的.m中不能为系统类添加扩展三、扩展和分类的区别分类是运行时决议;扩展是编译时决议;(所以扩展中声明的方法没有被实现,编译器会报警,但是分类种的方法没有被实现编译器是不会有任何警告的)分类原则上能增加属性,实例方法,类方法,协议,并且是公开的;扩展能添加方法,实例变量,默认是@private类型的,且只能作用于自身类,而不是子类或者其他地方;分类有自己的实现

2020-08-14 14:41:58 1903

原创 iOS +load与+initialize

一、loadApple文档中这样描述,传送门1、load源码解析调用方式类load调用源码load的方法中直接拿到load方法的内存地址直接调用方法。分类调用源码分类中也是通过直接拿到load方法的地址进行调用。因此正如我们之前试验的一样,分类中重写load方法,并不会优先调用分类的load方法,而不调用本类中的load方法了。2、 load函数调用特点当类被引用进项目的时候就会执行load函数(在main函数开始执行之前),与这个类是否被用到无关,每个类的load函数只会自动调用

2020-08-07 15:24:32 473

原创 iOS 分类(Category)

一、分类的使用场景可以减少单个文件的体积可以按照功能分组,放到不同的分类里,使类结构更清晰降低耦合性,同一个类可以有多个开发人员进行开发模拟多继承把静态库的私有方法公开二、分类的底层结构在runtime文件objc-runtime-new.h中,找到分类category_t的结构体:struct category_t { const char *name; //分类的名称 classref_t cls; //类 struct method_list_t *i

2020-08-06 18:42:34 2355

原创 iOS 离屏渲染

一、图像渲染工作原理具体查看iOS 图像显示原理及卡顿掉帧的原因UIView的绘制原理二、离屏渲染屏幕渲染有以下两种方式:On-Screen Rendering当前屏幕渲染,指的是在当前用于显示的屏幕缓冲区中进行渲染操作。Off-Screen Rendering离屏渲染,指的是 GPU 或 CPU 在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作。过程中需要切换 contexts (上下文环境),先从当前屏幕切换到离屏的contexts,渲染结束后,又要将 contexts 切换回来,而切

2020-08-05 20:26:57 208

原创 iOS UIView的绘制原理

一、UIView的绘制原理当UIView调用setNeedDisplay之后,实际上并没有立即发生位图的绘制工作,而是在之后的某个时机进行当前UI视图的真正绘制工作。当我们调用UIView的setNeedDisplay方法之后,系统会调用view对应layer的setNeedsDisplay方法,相当于在当前layer上打了一个标记;在当前runloop即将结束的时候调用CALayer的display方法,然后进入我们视图的真正绘制工作。CALayer的display方法在它的内部实现当中,首先

2020-08-05 16:37:19 1164

原创 iOS 图像显示原理及卡顿掉帧的原因

首先我们了解一下iOS图像显示的原理关于CPU和GPU两个硬件都是通过总线连接起来的,CPU主要处理UI的布局和一些文本信息的计算以及整个绘制过程图片编解码,最后在合适的时机提交位图给GPU。而我们的GPU则是负责对位图进行渲染,最后将渲染好的位图放到帧缓存区。由视频控制器在指定时间之前去帧缓冲区提取显示内容,通过显示屏显示出来。举例说明当我们创建一个UIView控件之后,它的显示部分由CALayer负责;CALayer当中有一个contents属性,就是我们要绘制屏幕当中的位图;比如说我们创

2020-08-05 14:50:33 2073

原创 iOS 事件传递和视图响应链

一、事件传递1、事件的分类multitouch events:所谓的多点触摸事件,即用户触摸屏幕交互产生的事件类型;motion events:所谓的移动事件。是指用户在摇晃、移动和倾斜手机的时候产生的事件称为移动事件。这类事件依赖于iPhone手机里边的加速器,陀螺仪等传感器;remote control events:所谓的远程控制事件。指的是用户在操作多媒体的时候产生的事件。比如,播放音乐,视频等。2、触摸事件UIEventiOS将触摸事件定义第一个手指开始触摸屏幕到最后一个手指离

2020-08-04 18:34:52 937

原创 iOS 数据源同步问题

当我们开启子线程处理数据源的时候,主线程的操作并没有记录在子线程中。这样就会导致子线程处理完数据返回主线程刷新UI后数据错乱。例子:比如说tableView中显示新闻数据和广告,子线程进行网络请求,数据解析等操作的同时。主线程中删除了广告,并更新UI。然后子线程处理完数据,最终也在主线程中更新UI,子线程没有记录主线程的删除操作,导致数据源没有同步的问题。解决办法如下1、并发访问,数据拷贝通过上图我们可以了解当主线程做了一次删除操作的时候,我们需要将这个操作记录下来,并且当子线程需要操作的时候进行

2020-08-04 14:46:51 542 3

原创 iOS UITableView的重用机制

一、重用机制1、UITableView内部中有两个NSMutableArray:当前显示的cell集合——visiableCells;可重用cell的集合:reusableTableCells;2、UITableView开始时,visiableCells为空,reusableTableCells为空;3、tableView显示在屏幕中时,通过下面方法- (nullable __kindof UITableViewCell *)dequeueReusableCellWithIdentifier:(N

2020-08-04 13:18:10 406

原创 iOS 权限统计

一、权限添加1、麦克风权限:Privacy - Microphone Usage Description 是否允许此App使用你的麦克风?2、相机权限: Privacy - Camera Usage Description 是否允许此App使用你的相机?3、相册权限: Privacy - Photo Library Usage Description 是否允许此App访问你的媒体资料库...

2018-05-09 10:31:07 810

原创 iOS RunLoop

参考: https://www.cnblogs.com/kenshincui/p/6823841.html https://www.jianshu.com/p/b9426458fcf6 http://www.cocoachina.com/ios/20150601/11970.html一、RunLoop概念通常所说的RunLoop指的是NSRunloop或者CFRunloopRef...

2018-04-20 17:17:55 1375

转载 线程中添加定时器NSTimer

参考:https://my.oschina.net/u/936286/blog/159490- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ self.window = [[[UIWindow alloc] in...

2018-04-19 14:49:10 689

原创 iPhone X:一、适配

一、屏幕尺寸 设备 屏幕尺寸 分辨率(pt) Reader 分辨率(px) 4/4s 3.5英寸 320*480 @2X 640*960 5/5S/5C 4英寸 320*568 @2X 640*1136 6/6s/7/8 4.7英寸 375*667 @2X 750*1334 6+/6s...

2018-04-18 13:57:09 366

原创 iOS 11:二、UIScrollView偏移

一、translucent/* New behavior on iOS 7. Default is YES. You may force an opaque background by setting the property to NO. If the navigation bar has a custom background image, the default is inf...

2018-04-17 15:25:40 1205

原创 iOS 11:一、导航栏变化

一、prefersLargeTitles属性iOS11 UINavigationBar新添加的prefersLargeTitles属性1、prefersLargeTitles/// When set to YES, the navigation bar will use a larger out-of-line title view when requested by the ...

2018-04-13 16:48:33 2168

原创 MAC构建ipv6环境

设备需求1、一台具有流量的手机A 2、一台安装测试App的手机B 3、一台MAC一、共享wifi手机A关闭wifi,打开个人热点,开启热点,点击仅蓝牙和USB 二、MAC连接共享wifi用USB将手机A与MAC连接,查看一下显示iPhone USB是否已经连接上(偏好设置->网络),若没有,可尝试关闭MAC的wifi,将自动连接共享wifi。 三、...

2018-03-15 10:36:39 6290

原创 Xcode8.3支持iOS11

下载Xcode 9,然后查找路径 /Applications/Xcode9.app/Contents/Developer/Platforms/iPhoneOS.platform/11.0 (15A5278f) 这个 支持复制到 /Applications/Xcode8.3.3.app/Contents/Developer/Platforms/iPhoneOS.platform/ 里Xcode 8.

2017-12-12 15:01:15 943

原创 CSS 文本样式[下]

文本总汇 文本样式 文本控制一、文本总汇 CSS文本样式中文本内容的一些设置,样式表如下: 属性名 说明 CSS版本 text-decoration 装饰文本出现各种划线。

2017-10-30 13:43:51 532

原创 CSS 文本样式[上]

字体总汇 字体设置 Web字体通过文本样式的设置,更改字体的大小、样式以及文本的方位。一、字体总汇CSS文本样式表如下: 属性名 说明 CSS版本 font-size 设置字体的大小

2017-10-26 09:36:50 933

原创 CSS 颜色与度量单位

颜色表方案 度量单位探讨HTML5中CSS颜色和度量单位等问题,包括颜色的选取方式、相对长度和绝对长度等。一、颜色表方案颜色的表现形式主要有三种方式:颜色名称、十六进制代码和十进制代码。1、颜色名称p { color: red;}解释:这是将一个段落内的文字设置为红色,采用的是英文颜色名称。在古老的HTML4时,颜色名称只有167种。

2017-10-23 17:24:50 835

原创 CSS 选择器[下]

伪类选择器总汇 结构性伪类选择器 UI伪类选择器 动态伪类选择器 其他伪类选择器一、伪类选择器汇总 伪类选择器分为四种类型:结构性伪类、UI伪类、动态伪类和其他伪类选择器。 选择器 名称 说明 CSS版本

2017-10-23 15:02:39 561

原创 CSS 选择器[上]

选择器总汇 基本选择器 符合选择器 伪元素选择器 目前CSS选择器的版本已经升级至第三代,即CSS3选择器。CSS3选择器提供了更多、更丰富的选择器方式,主要分为三大类。一、选择器总汇 三种选择器:基本选择器、复合选择器和伪选择器,具体如下: 选择器 名称 说明

2017-10-19 10:36:35 922

原创 CSS 入门

使用CSS 三种方式 层叠和继承一、使用CSS CSS样式由一条或多条分号隔开的样式声明组成。没条声明的样式包含着一个CSS属性和属性值。<p style="color:red;font-size:50px;"> 这是一段文本</p> 解释:style是行内样式属性,color是颜色属性,red是颜色属性值;font-size是字体大小属性,50px是字

2017-10-17 10:11:29 369

原创 HTML 全局属性及其他

实体 元数据 全局属性一、实体 HTML实体就是将有特殊意义的字符通过实体代码显示出来。 显示结果 描述 实体名称 实体编号   空格     < 小于号 < &

2017-10-13 14:18:56 507

原创 HTML 表单元素(下)

其他元素 输入验证一、其他元素 元素名称 说明 select 生成一个下拉列表进行选择 optgroup 对select元素进行

2017-10-13 11:33:24 377

原创 HTML 表单元素(中)

type属性总汇 type属性解析一、type属性总汇 input元素可以用来生成一个供用户输入数据的简单文本框。在默认的情况下,什么样的数据均可以输入。而通过不通的属性值,可以限制输入的内容。 属性名称 说明 text

2017-10-12 17:54:38 520

原创 HTML 表单元素(上)

表单元素总汇 表单元素解析一、表单元素总汇 在HTML5的表单中,提供了各种可供用户输入的表单控件。 元素名称 说明 form 表示HTML表单

2017-10-12 17:48:09 435

原创 HTML 音频和视频

音频和视频概述 video视频元素 audio音频元素 本章主要探讨HTML5中音频和视频元素,通过这两个原生的媒体元素向HTML页面中嵌入音频和视频。一、音频和视频概述 首先,我们要理解两个概念:容器(container)和编解码器(codec)。1、视频容器 音频文件或视频文件,都只是一个容器文件。视频文件包含了音频轨道、视频轨道和其他一些元数据。视频播

2017-10-11 10:45:46 898

原创 HTML 嵌入元素

学习要点 嵌入元素总汇 嵌入元素解析一、嵌入元素总汇 元素名称 说明 img 嵌入图片 map 定义客户端分区响应图

2017-10-10 15:21:40 1219

原创 HTML 文档元素

学习要点 文档元素总汇 文档元素解析一、文档元素汇总 文档元素基本没有什么实际作用效果,主要目的是在页面布局时区分各个主题和概念。 元素名称 说明 h1~h6 表示标题

2017-10-09 17:05:35 464

原创 HTML 表格元素

学习要点 表格元素汇总 构建表格解析一、表格元素汇总表格的基本构成最少需要三个元素:< table >、< tr >、< td >,其他的一些作为可选铺助存在。 元素名称 说明 table 表示表格

2017-10-09 16:08:13 2011

原创 HTML 分组元素

学习要点 分组元素总汇 分组元素解析 分组:就是用来组织相关内容的HTML5元素,清晰有效的进行归类 一、分组元素总汇 元素名称 说明 p 表示段落

2017-09-28 17:38:30 1237 1

原创 HTML 超链接和路径

学习要点: 超链接的属性 相对与绝对路径 锚点设置一、超链接属性< a > 元素属于文本元素,有一些私有属性或者叫局部属性。那么,相对应的还有通用属性或叫做全局属性。 属性名称 说明 href 指定< a > 元素所指资源的URL hreflan

2017-09-28 11:17:13 4780

原创 HTML 文本元素

一、文本元素总汇 HTML5规范指出:使用元素应该完全从元素的语义出发。但是由于历史遗留及用户至上的原则,这种语义会宽松许多。 元素名称 说明 a 生成超链接 br 强制换行 wbr 可安全换行

2017-09-27 17:45:10 1558

原创 HTML 基本格式

基本格式 一、HTML文档结构看注释二、文档结构解析1、Doctype 文档类型说明(Document Type Declaration,也称Doctype)。它主要告诉浏览器所查看的文件类型。在以往的HTML4.01和XHTML1.0中,它表示具体的HTML版本和风格。而如今HTML5不需要表示版本和风格了。< !DOCTYPE html > //不区分大小写 2、h

2017-09-27 14:43:39 5584

原创 Swift Label计算高度

// 计算字生符串的宽度,高度let string = "一个叫张三的人,存了三百两银子,想把它藏起来,又怕被人偷去,想来想去,还是把它埋起来好。于是找了个隐蔽地方挖了个坑把银子埋了,但还是不放心,就在埋银子的地方立了块牌子,上面写道“此地无银三百两”。他的邻居李四看到了这个牌子,大笑道:“这不是明明告诉人们,这里有三百两银子吗?”于是就把银子挖走了,但也不放心,怕张三怀疑自己,于是就在那块牌子边

2017-09-26 11:11:19 2889

原创 Swift 访问控制

访问控制可以限定其他源文件或模块中代码对你代码的访问级别。 你可以明确地给单个类型(类、结构体、枚举)设置访问级别,也可以给这些类型的属性、函数、初始化方法、基本类型、下标索引等设置访问级别。 协议也可以被限定在一定的范围内使用,包括协议里的全局常量、变量和函数。 访问控制基于模块与源文件。 模块指的是以独立单元构建和发布的 Framework 或 Application。在 Swift 中

2017-09-22 17:35:39 499

原创 Swift 泛型

Swift 提供了泛型让你写出灵活且可重用的函数和类型。 Swift 标准库是通过泛型代码构建出来的。 Swift 的数组和字典类型都是泛型集。 你可以创建一个Int数组,也可创建一个String数组,或者甚至于可以是任何其他Swift 的类型数据数组。 以下实例是一个非泛型函数 exchange 用来交换两个 Int 值:实例// 定义一个交换两个变量的函数func swapTwoInt

2017-09-21 17:51:58 322

原创 Swift 协议

协议规定了用来实现某一特定功能所必须的方法和属性。 任意能够满足协议要求的类型被称为遵循(conform)这个协议。 类,结构体或枚举类型都可以遵循协议,并提供具体实现来完成协议定义的方法和功能。语法协议的语法格式如下:protocol SomeProtocol { // 协议内容}要使类遵循某个协议,需要在类型名称后加上协议名称,中间以冒号:分隔,作为类型定义的一部分。遵循多个协议时

2017-09-21 15:06:12 388

原创 Swift 扩展

扩展就是向一个已有的类、结构体或枚举类型添加新功能。 扩展可以对一个类型添加新的功能,但是不能重写已有的功能。 Swift 中的扩展可以:添加计算型属性和计算型静态属性定义实例方法和类型方法提供新的构造器定义下标定义和使用新的嵌套类型使一个已有类型符合某个协议语法扩展声明使用关键字 extension:extension SomeType { // 加到SomeType的新

2017-09-21 13:05:27 345

全国城市商圈经纬度MYSQL版

全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版

2024-05-08

全国城市商圈经纬度MYSQL版

全国城市商圈经纬度MYSQL版

2022-12-01

iOS-组件化管理.zip

iOS组件化管理

2022-01-04

设计原则(责任链,桥接,适配器,单例,命令)

设计原则(责任链,桥接,适配器,单例,命令) + 六大原则

2021-05-12

runtime 818.2

runtime 818.2版本

2021-04-28

RuntimeObject.zip

Objective-C Runtime是一个将C语言转化为面向对象语言的扩展。 我们将C++和Objective进行对比,虽然C++和Objective-C都是在C的基础上加入面向对象的特性扩充而成的程序设计语言,但二者实现的机制差异很大。C++是基于静态类型,而Objective-C是基于动态运行时类型。也就是说用C++编写的程序编译时就直接编译成了可令机器读懂的机器语言;用Objective-C编写的程序不能直接编译成可令机器读懂的机器语言,而是在程序运行的时候,通过Runtime把程序转为可令机器读懂的机器语言。Runtime是Objective不可缺少的重要一部分。

2020-09-04

RuntimeObject.zip

Objective-C Runtime是一个将C语言转化为面向对象语言的扩展。 我们将C++和Objective进行对比,虽然C++和Objective-C都是在C的基础上加入面向对象的特性扩充而成的程序设计语言,但二者实现的机制差异很大。C++是基于静态类型,而Objective-C是基于动态运行时类型。也就是说用C++编写的程序编译时就直接编译成了可令机器读懂的机器语言;用Objective-C编写的程序不能直接编译成可令机器读懂的机器语言,而是在程序运行的时候,通过Runtime把程序转为可令机器读懂的机器语言。Runtime是Objective不可缺少的重要一部分。

2020-09-04

iOS-KVC的实现

KVC全称是Key Value Coding(键值编码),是一个基于NSKeyValueCoding非正式协议实现的机制,它可以直接通过key值对对象的属性进行存取操作,而不需通过调用明确的存取方法。这样就可以在运行时动态在访问和修改对象的属性,而不是在编译时确定。

2020-08-28

iOS-KVO.zip

KVO全称是Key Value Observing,是苹果提供的一套事件通知机制。允许对象监听另一个对象特定属性的改变,并在改变时接收到事件。由于KVO的实现机制,只针对属性才会发生作用,一般继承自NSObject的对象都默认支持KVO。

2020-08-25

空空如也

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

TA关注的人

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