摘要:这是以前旧博客在13年规划写的一个系列,写了一部分内容,还没有完成。现在重新整理编写。计划从基础知识六大设计原则、设计模式中类的关系开始,然后会对iOS开发中的常用架构模式进行介绍,最后对GoF的23种设计模式进行分析。由于本人编写本系列文章时也是边学习边整理,因此持续的时间会比较长,更多的是希望和 阅读全文
posted @ 2016-07-25 21:15 LeeGof 阅读 (476) 评论 (3) 编辑
摘要:本学习基于苹果官方Swift学习材料,保留了原版90%左右的内容(一些项目开发中基本不用的知识点没有整理),并根据理解进行整理。如对原版感兴趣,可以直接单击链接阅读和学习。 第一部分 基础篇 1.基本介绍 2.运算符 3.字符串和字符 4.集合 5.控制流 6.函数 7.闭包 8.枚举 第二部分 进 阅读全文
posted @ 2016-07-15 13:48 LeeGof 阅读 (568) 评论 (0) 编辑
摘要:1.混合开发的场景 1.1作为独立页面加入 这是以页面级作为独立的模块加入,而不是页面的某个元素。 原生页面可以打开Flutter页面 Flutter页面可以打开原生页面 1.2作为页面的一部分嵌入 比如说原生页面中只有某一个item是Flutter; Flutter页面中只有某一部分是原生视图 2 阅读全文
posted @ 2019-07-02 22:08 LeeGof 阅读 (797) 评论 (0) 编辑
摘要:0.前言 关于性能优化的官方文档介绍,可以在https://developer.apple.com/library/archive/navigation/ 中搜索 "Performance Overview"。 1.内存管理 1.1内存5大区 栈区 特点:由编译器自动完成分配和释放,不需要程序员手动 阅读全文
posted @ 2019-06-12 14:13 LeeGof 阅读 (161) 评论 (0) 编辑
摘要:1.Flutter是什么? 官方介绍:Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。 从官方介绍可以看到,Flu 阅读全文
posted @ 2019-05-05 10:06 LeeGof 阅读 (1415) 评论 (0) 编辑
摘要:1.屏幕显示图像的原理 显示器按照从上到下的方式,一行行扫描,扫描完成后显示器就呈现一帧画面,随后电子枪回到初始位置继续下一次扫描。为了把显示器的显示过程和系统的视频控制器进行同步,显示器(或者其他硬件)会用硬件时钟产生一系列的定时信号。当电子枪换到新的一行,准备进行扫描时,显示器会发出一个水平同步 阅读全文
posted @ 2019-04-11 10:07 LeeGof 阅读 (92) 评论 (0) 编辑
摘要:从官方的Demo,我们知道,要在客户端显示Weex页面,是通过WXSDKInstance的实例实现的。我们先来看看这个类里面都有什么: @interface WXSDKInstance : NSObject // 需要渲染的viewController @property (nonatomic, w 阅读全文
posted @ 2018-05-11 17:23 LeeGof 阅读 (276) 评论 (0) 编辑
摘要:注册Modules的流程和注册Components非常类似。 WXSDKEngine会默认注册这17种基础模块。这里以模块WXWebSocketModule为例,来看看它是如何被注册的。 我们逐步来分析注册模块的三个过程。 第一步:在WXModuleFactory中注册。 在WXModuleFact 阅读全文
posted @ 2018-05-10 16:18 LeeGof 阅读 (123) 评论 (0) 编辑
摘要:先看代码: WXSDKEngine中默认注册了3个Handler。 WXSDKEngine会继续调用WXHandlerFactory的registerHandler:withProtocol:方法。 WXHandlerFactory也是一个单例,里面有一个线程安全的字典handlers,用来保存实例 阅读全文
posted @ 2018-05-10 16:18 LeeGof 阅读 (48) 评论 (0) 编辑
摘要:先来看一下注册Components的源码: 从源码可以看到,WeexSDK会默认注册这28个组件。这里以WXWebComponent组件注册为例,来分析组件注册的过程。 【说明】:上面标红可以看到,有两个注册组件的方法,区别在于最后一个入参是否传@{@"append":@"tree"}。如果被标记成 阅读全文
posted @ 2018-05-10 16:17 LeeGof 阅读 (91) 评论 (0) 编辑
摘要:0.从工作原理谈起 Weex 表面上是一个客户端技术,但实际上它串联起了从本地开发、云端部署到分发的整个链路。开发者首先可在本地像编写 web 页面一样编写一个 app 的界面,然后通过命令行工具将之编译成一段 JavaScript 代码,生成一个 Weex 的 JS bundle;同时,开发者可以 阅读全文
posted @ 2018-05-10 15:50 LeeGof 阅读 (201) 评论 (0) 编辑
摘要:WebViewJavascriptBridge是一个Objective-C与JavaScript进行消息互通的三方库。通过WebViewJavascriptBridge,我们可以很方便的实现OC和Javascript互调的功能。WebViewJavascriptBridge实现互调的过程也容易理解, 阅读全文
posted @ 2017-12-29 11:00 LeeGof 阅读 (13977) 评论 (0) 编辑
摘要:Pharicator 是FB的代码审查工具,主要开发者为Evan Priestley,是一个开源软件,可在Apache许可证第2版下作为自由软件分发。详细信息可查看官方文档。这里从应用的角度,一步一步来谈怎么使用Pharicator进行代码审查。 1.安装 安装分为两部分:服务端和客户端。服务端的这 阅读全文
posted @ 2017-07-05 16:11 LeeGof 阅读 (696) 评论 (0) 编辑
摘要:Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (11) must be equal to the number of rows contained in that section before the update (11), plus or minus the number of rows inserted or deleted from that section (1 inserted, 0 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out). (null) 阅读全文
posted @ 2017-06-21 17:24 LeeGof 阅读 (857) 评论 (1) 编辑
摘要:1.class-dump class-dump是用来dump目标文件的类信息的工具。它利用Objective-C语言的runtime的特性,将存储在mach-O文件中的@interface和@protocol信息提取出来,并生成对应的.h文件。官方介绍如下: This is a command-li 阅读全文
posted @ 2017-06-16 17:22 LeeGof 阅读 (11935) 评论 (0) 编辑
摘要:Reveal是一个强大的UI分析工具,使用它可以查看各个界面的视图层级,在解决界面显示问题时非常有用。它最大的特点就是非常直观,查看UI布局的时候非常方便。 我们知道,Reveal官网提供的方法只能监测、调试自己的App,第三方的App无法监测。本篇我们来用Reveal工具实现分析任意的App。 1 阅读全文
posted @ 2017-06-16 17:21 LeeGof 阅读 (316) 评论 (0) 编辑
摘要:TheOS 被设计为一个在基于 Unix 平台 (Mac OS X、IOS…) 和大多数 的Linux 平台下开发 iOS 程序的集成开发环境。说是集成开发环境,其实就是给我们准备好了一些代码模板、预置一些基本的 Makefile 脚本,我们还是要在 终端命令行 中完成一些关键操作。 1.安装dpk 阅读全文
posted @ 2017-06-16 17:20 LeeGof 阅读 (2298) 评论 (0) 编辑
摘要:上篇谈到使用TheOS进行越狱开发,但是流程相对而言较复杂,本篇我们谈一下iOSOpenDev进行越狱开发。通过使用iOSOpenDev,我们可以使用Xcode进行开发、编译、生成并运行到设备上。 1.安装iOSOpenDev 打开网址:http://iosopendev.com/download/ 阅读全文
posted @ 2017-06-16 17:20 LeeGof 阅读 (3585) 评论 (0) 编辑
摘要:1.连接设备 打开一个终端,输入指令: 重新打开一个新的终端,输入指令: 这时候会提示输入密码:默认密码为“alpine”。这样就可以连接到设备了。 也可直接通过如下指令连接到设备: 如果后面没有"-p 22",有可能会报错: 这个时候,使用如下指令修改"services"文件,把5860修改为22 阅读全文
posted @ 2017-06-09 22:07 LeeGof 阅读 (225) 评论 (0) 编辑
摘要:上篇讲了SDWebImageDownloader,从源码分析的过程中,我们知道,实际执行下载任务的是SDWebImageDownloaderOperation,本篇我们来看看SDWebImageDownloaderOperation是怎么工作。 在正式讲SDWebImageDownloaderOpe 阅读全文
posted @ 2017-06-02 15:36 LeeGof 阅读 (721) 评论 (0) 编辑
摘要:SDWebImageDownloader完成了对网络图片的异步下载工作,准确说这个类是一个文件下载的工具类,真正的网络请求是在继承于NSOperation的SDWebImageDownloaderOperation类实现的。SDWebImageDownloader的主要任务是下载相关配置项的管理,包 阅读全文
posted @ 2017-06-02 15:36 LeeGof 阅读 (1977) 评论 (0) 编辑
摘要:SDWebImageCompat 是SDWebImage 的配置文件,里面利用条件编译对Apple 的各个平台进行了兼容。从源码中可以看到SDWebImage 支持当前的MAC/iOS/TV/WATCH 平台,这种适配各个平台的兼容,对框架开发意义重大。 1.#import <TargetCondi 阅读全文
posted @ 2017-06-02 15:36 LeeGof 阅读 (614) 评论 (0) 编辑
摘要:UIView+WebCache是我们能很方便的使用sd_setImageWithURL:系列方法来加载图片的关键类。UIButton(WebCache)、MKAnnotationView(WebCache)、UIImageView(HighlightedWebCache)、FLAnimatedIma 阅读全文
posted @ 2017-06-02 15:35 LeeGof 阅读 (786) 评论 (0) 编辑
摘要:SDWebImage使用了很多工具类来对图片的处理,比如获取图片类型、图片放大缩小、GIF图片处理、图片解压缩处理等。下面我们来看一下这几个工具类。 1.NSData+ImageContentType 这个类提供了一个类方法sd_imageFormatForImageData。通过这个方法传入图片的 阅读全文
posted @ 2017-06-02 15:35 LeeGof 阅读 (461) 评论 (0) 编辑
摘要:SDWebImageManager是SDWebImage的核心类。它拥有一个SDWebImageCache和一个SDWebImageDownloader属性,分别用于图片的缓存和下载处理。虽然是核心类,但它的源码很简单,这是因为相应的功能职责进行了良好的分类。下面我们来看一下它的源码。 1.SDWe 阅读全文
posted @ 2017-06-02 15:35 LeeGof 阅读 (1621) 评论 (0) 编辑
摘要:SDImageCache和SDWebImageDownloader是SDWebImage库的最重要的两个部件,它们一起为SDWebImageManager提供服务,来完成图片的加载。SDImageCache提供了对图片的内存缓存、异步磁盘缓存、图片缓存查询等功能,下载过的图片会被缓存到内存,也可选择 阅读全文
posted @ 2017-06-02 15:35 LeeGof 阅读 (3328) 评论 (0) 编辑
摘要:1.概述 SDWebImage是iOS开发中,被广泛使用的一个第三方开源库,提供了图片从加载、解析、处理、缓存、清理等一些列功能,让我们能够专心于业务的处理。本篇会从SDWebImage的源码,来一步步分析,让我们更加的熟悉和了解它,以达到更好的应用的目的。 SDWebImage最常用的方法就是下面 阅读全文
posted @ 2017-06-02 15:06 LeeGof 阅读 (210) 评论 (0) 编辑
摘要:在我们提交安装包到App Store的时候,如果安装包过大,有可能会收到类似如下内容的一封邮件: 收到这封邮件的时候,意味着安装包在App Store上下载的时候,有的设备下载的安装包大小会超过100M。对于超过100M的安装包,只能在WIFI环境下下载,不能直接通过4G网络进行下载。 在这里,我们 阅读全文
posted @ 2017-05-05 21:30 LeeGof 阅读 (6162) 评论 (0) 编辑
摘要:1.Block定义 可以用一句话来表示Block:带有自动变量(局部变量)的匿名函数。 在iOS中使用“^”来声明一个Block。Block的内容是包含在“{}”中的,并且和C语言一样用“;”来表示语句的结束,标准语法如下所示: 从上面可以看到,Block和函数很相似,具体体现在这些方面: 我们通常 阅读全文
posted @ 2017-04-25 22:41 LeeGof 阅读 (82) 评论 (0) 编辑
摘要:在iOS开发中,我们接触比较多的是MVC架构,下面我们先来分析一下MVC架构。 1.MVC MVC是一种软件架构模式,在1978年由Trygve Reenskaug提出,它把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller): 视图(View):用户界面。 阅读全文
posted @ 2017-04-22 11:57 LeeGof 阅读 (83) 评论 (0) 编辑
摘要:做项目一般都会要求写技术文档,特别是提供SDK或者基础组件的。如果手写这类技术文档的话,工作量比编写代码也少不了多少。比如 Java 语言本身就自带 javadoc 命令,可以从源码中抽取文档。本篇我们看一下OC中的一个类似工具:appledoc。 1.简介 基于命令行的操作、使用方便,默认生成的文 阅读全文
posted @ 2017-04-18 15:45 LeeGof 阅读 (362) 评论 (0) 编辑
摘要:我们知道,Objective-C是一门动态语言,它将很多静态语言在编译时期做的事放到了运行时来处理。用C++编写的程序通过编译器直接把函数地址硬编码进入可执行文件;而Objective-C无法通过编译器直接把函数地址硬编码进入可执行文件,而是在程序运行的时候,利用Runtime根据条件判断作出决定, 阅读全文
posted @ 2017-04-11 22:31 LeeGof 阅读 (469) 评论 (0) 编辑