自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 iOS-申请邓白氏编码的超详细流程介绍(2017.06.12)

一、填写申请表单申请苹果开发者账号途中,我们会用到邓白氏编码,申请邓白氏编码的入口自然也是在申请苹果开发者账号途中进入。1.登录AppID登录入口:https://developer.apple.com/account/ .公司开发者账号一般都是由老板来管理的,所以使用老板的个人AppID登录就好了,没有就让老板申请一个。登录进来后进行以下操作: 选择Company/Origani

2017-06-12 15:35:28 34715 3

原创 iOS 组件化

一、为什么需要组件化随着公司业务的不断发展,项目的功能越来越复杂,各个业务代码耦合越来越多,代码量急剧增加,传统的 MVC 或者 MVVM 架构已经无法高效的管理工程代码,因此需要用一种技术来更好地管理工程,而组件化是一种能够解决代码耦合的技术。项目经过组件化的拆分,不仅可以解决代码耦合的问题,还可以增强代码的复用性,工程的易管理性等。组件化的优势有利于代码模块的封装和复用。对不同的业务模块可以进行物理隔离(通过git私有 仓库权限控制),进一步提升代码的稳定性和安全性。项目整体结构层次分明,便

2022-01-04 14:53:09 2565

原创 iOS Instrument

Xcode 12.4Blank:空白,可以使用库中的工具定制的空白跟踪文档Activity Monitor:活动监视器,监视进程和系统的CPU、内存、磁盘和净工作使用量统计数据Allocations:分配,跟踪进程的匿名虚拟内存和堆,为对象提供类名和可选的保留/释放历史Animation Hitches:动画监视,此模板通过时间分析来度量应用程序图形性能以及进程的CPU使用情况App Launch:启动问题,可以用于查看App的启动过程,从而可以针对性的对启动速度进行优化Core Data:

2021-05-17 16:05:37 507

原创 iOS 设计模式

一、六大设计原则单一职责原则依赖倒置原则开闭原则里氏替换原则接口隔离原则迪米特法则1、单一职责原则一个类只负责一件事2、依赖倒置原则抽象不应该依赖于具体实现,具体实现可以依赖于抽象3、开闭原则对修改关闭、对扩展开放4、里氏替换原则父类可以被子类无缝替换,且原有功能不受任何影响5、接口隔离原则使用多个专门的协议,而不是一个庞大臃肿的协议协议中的方法尽量少6、迪米特法则一个对象应当对其他对象有尽可能少的了解高内聚、低耦合二、责任链问题:解决方案:...

2021-05-12 13:55:56 244

原创 iOS 网络

#mermaid-svg-dnotgPy8NLSxqDWV .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-dnotgPy8NLSxqDWV .label text{fill:#333}#mermaid-svg-dnotgPy8NLSxqDWV .node rect,#mermaid-svg-dnotgPy8NL

2021-05-11 16:26:09 237

原创 iOS 多线程

#mermaid-svg-AxD3XhAQartdSFY5 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-AxD3XhAQartdSFY5 .label text{fill:#333}#mermaid-svg-AxD3XhAQartdSFY5 .node rect,#mermaid-svg-AxD3XhAQar

2021-05-08 18:09:25 154

原创 iOS Block

#mermaid-svg-bf4zeaT6GaxRXT7K .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-bf4zeaT6GaxRXT7K .label text{fill:#333}#mermaid-svg-bf4zeaT6GaxRXT7K .node rect,#mermaid-svg-bf4zeaT6Ga

2021-05-07 09:53:04 149

原创 iOS 内存管理

内容管理相关问题一、内存布局stack(栈区):方法调用heap(堆区):通过alloc等分配的对象bss(未初始化数据):未初始化的全局变量等data(已初始化数据):已初始化的全局变量等text(代码段):程序代码二、内存管理方案TaggedPointer:用于优化NSNumber,NSDate,NSString等小对象的存储。NSNumber指针里边存储的数据是:tag+data,也就是直接将数据存储在指针里。这样做特别节省空间。如果这个数据特别大,指针存储不下这个数,那么会

2021-04-29 15:49:06 324

原创 iOS runtime之类和对象(二)

每个Class都有一个isa指针指向一个唯一的Meta Class每一个Meta Class 的isa 指针都指向Meta Class,即NSObject的MetaClass,而最上层的MetaClass的isa指针又指向自己。一、对象、类对象、元类对象1、类对象类对象存储实例方法列表等信息类对象是程序猿定义并在运行时由编译器创建的,它没有自己的实例变量,这里需要注意的是类的成员变量和实例方法是属于实例对象的,但其存储于类对象当中的。2、实例对象实例对象是我们对类对象alloc或者new..

2020-09-03 18:04:01 139

原创 iOS runtime之元素认知(一)

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

2020-09-03 15:10:17 187

原创 iOS 属性关键字

一、分类读写权限原子性引用计数二、读写权限readwrite 读写,readonly 只读。属性默认是readwrite,支持读写。1、readonly属性只具有get方法;2、readwrite属性同时具有set和get方法;三、原子性1、nonatomic非原子的,atomiiac原子的。属性默认是atomiac,也就是原子性的。nonatomic执行效率高。2、atomic读写安全,但效率低,不是绝对的安全,比如操作数组,增加或移除买这种情况下使用互斥锁来保证线程安全。

2020-09-01 11:58:32 372

原创 iOS KVC

一、KVC简介KVC全称是Key Value Coding(键值编码),是一个基于NSKeyValueCoding非正式协议实现的机制,他可以直接通过Key值对对象的属性存取操作,而不需通过明确的存取方法。这样就可以在运行时动态在访问和修改对象的属性,而不是在编译时确定。KVC提供了一种间接访问属性方法或成员变量的机制,可以通过字符串来访问对象的属性方法或成员变量;在实现了访问器方法的类中,使用点语法和KVC访问对象其实差别不大,二者可以任意混用(因为KVC会首先搜索访问器方法,见下文)。但是没有访

2020-08-28 17:34:00 396

原创 iOS 通知(NSNotification)

一、通知1、基本概念NSNotification是iOS中一个调度消息通知的类,采用单例模式设计,在程序中实现传值、回调等地方应用很广。在iOS中,NSNotification & NSNotificaitonCenter是使用观察者模式来实现的用于跨层传递消息。2、什么情况下使用通知观察者模式:定义对象间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于它的对象都得道通知并自动更新。二、通知的特点是使用观察者模式来实现的用于跨层传递消息的机制;传递方式为一对多;三

2020-08-20 13:53:11 3051

原创 iOS 代理(Delegate)

一、代理的特点准确的说是一种软件设计模式iOS当中以@protocol形式提现传递方式一对一二、代理的基本使用代理是一种通用的设计模式,在iOS中有特定的语法来实现代理模式,OC语言可以通过@Protocol实现协议。1、代理组成部分协议:用来指定代理双方可以做什么,必须做什么。代理:根据协议,完成委托方需要实现的功能(方法)。委托:根据协议,指定代理去完成什么功能。2、协议(Protocol)的概念从上图中我们可以看到三方之间的关系,在实际应用中通过协议来规定代理双方的行为

2020-08-17 09:49:46 3674

原创 iOS 扩展(Extension)

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

2020-08-14 14:41:58 1845

原创 iOS +load与+initialize

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

2020-08-07 15:24:32 345

原创 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 2076

原创 iOS 离屏渲染

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

2020-08-05 20:26:57 181

原创 iOS UIView的绘制原理

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

2020-08-05 16:37:19 1110

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

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

2020-08-05 14:50:33 1970

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

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

2020-08-04 18:34:52 896

原创 iOS 数据源同步问题

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

2020-08-04 14:46:51 491 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 381

原创 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 769

原创 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 1360

转载 线程中添加定时器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 668

原创 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 278

原创 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 1153

原创 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 2122

原创 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 6242

原创 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 926

原创 CSS 文本样式[下]

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

2017-10-30 13:43:51 509

原创 CSS 文本样式[上]

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

2017-10-26 09:36:50 917

原创 CSS 颜色与度量单位

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

2017-10-23 17:24:50 814

原创 CSS 选择器[下]

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

2017-10-23 15:02:39 527

原创 CSS 选择器[上]

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

2017-10-19 10:36:35 854

原创 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 361

原创 HTML 全局属性及其他

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

2017-10-13 14:18:56 495

原创 HTML 表单元素(下)

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

2017-10-13 11:33:24 357

原创 HTML 表单元素(中)

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

2017-10-12 17:54:38 481

全国城市商圈经纬度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关注的人

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