源码解析ios开发SDWebImage方法
目录引言源码解析字典操作看一下调用下载函数前的实例化过程快速查找缓存的方法回调开始进入查找函数总结一下函数调用1.先调用2.设置图片引言
在着手写第二篇的时候,发现这个SDWebimage确实吧NSOperation用的太美了。确实可能帮你理解NSOperation和NSOperationQueue,当然还有Block的队列。还有一个GCD。
各位看官在看的时 ...
Swift继承Inheritance浅析介绍
目录继承(Inheritance)内存结构重写属性重写实例属性重写类型属性属性观察器final继承(Inheritance)
1、值类型(枚举、结构体)不支持继承,只有类支持继承
2、没有父类的类,称为:基类
Swift并没有像OC、Java那样的规定:任何类最终都要继承自某个基类。
3、子类可以重写父类的下标、方法、属性,重写必须加上overrid ...
Swift初始化方法的使用介绍
目录初始化初始化器初始化器的相互调用两段式初始化安全检查重写自动继承初始化
初始化器
1、类、结构体、枚举都可以定义初始化器
class Size {
init(age: Int) {
}
}
var s = Size(age: 10)
2、类有2种初始化器:指定初始化器(deaignated initializer)、便捷初始化器(convenience initializer)
class Size {
...
Swift初始化器与可选链的使用方法介绍
目录初始化器required属性观察器可失败初始化器反初始化器(deinit)可选链(Optional Chaining)初始化器
required
用required修饰指定初始化器,表明其所有子类都必须实现该初始化器(通过继承或者重写实现)
如果子类重写了required初始化器,也必须加上required,不用加上override
class Person {
required init() ...
Swift协议Protocol介绍
目录协议(Protocol)协议中的属性static、classmutatinginitinit、init?、init!协议的继承协议组合CaseIterableCustomStringConvertible协议(Protocol)
1、协议可以用来定义方法、属性、下标的声明,协议可以被枚举、结构体、类遵守(多个协议之间用逗号隔开)
protocol Drawable {
func draw()
var x: Int { ge ...
Swift Error的处理方法说明
目录错误类型自定义错误处理Errortry?与try!rethrowsdefer错误类型
1、开发过程常见的错误
语法错误(编译报错)逻辑错误运行时错误(可能会导致闪退,一般也叫做异常),也是我们今天讲的重点
自定义错误
1、Swift中可以通过Error协议自定义运行时的错误信息
enum SomeError: Error {
case illegalArg(String)
cas ...
Swift泛型Generics浅析讲解
目录泛型(Generics)汇编分析泛型的实现原理关联类型(Associated Type)类型约束协议类型的注意点泛型解决不透明类型(Opaque Type)泛型(Generics)
1、泛型可以将类型参数化,提高代码复用率,减少代码量
func swapValue<T>(_ a: inout T, _ b: inout T) -> Void {
(a, b) = (b, a)
}
var fn: (inout Int, inout I ...
[Android开发学iOS系列] 工具篇: Xcode使用和快捷键
[Android开发学iOS系列] 工具篇: Xcode使用和快捷键
工欲善其事必先利其器.
编辑
Cmd + N: 新建文件
Option + Cmd + N: 新建文件夹
Cmd + / : 注释
Ctrl + I: format indentation, (但是使用这个快捷键要小心, 可能会在你的空行里加入不必要的首行缩进, 所以没事不要全选再format.)
Ctrl + Cmd + Space → Emoji
Opt + Cmd ...
iOS开发之MRC(手动内存管理)详解
目录前言:内存管理的经验总结一、 MRC 手动管理内存(Manual Reference Counting)1、引用计数器2、引用计数器操作3、dealloc 方法4、野指针和空指针二、内存管理思想1、单个对象内存管理思想思想一:自己创建的对象,自己持有,自己负责释放思想二:非自己创建的对象,自己也能持有2、多个对象内存管理思想三、 @property ...
iOS文件预览分享小技能示例
目录前言I 第三方SDK分享文件1.1 微信SDK1.2 友盟SDKII 原生API的文件预览及其他应用打开2.1 预览文件2.2 文件分享2.3 控制是否显示copy、 print、saveToCameraRollIII 案例3.1 文件下载和预览3.2 使用数据模型保存下载文件路径3.3 使用数据模型分享文件3.4 清理缓存前言
应用场景:文件下载、打印
I 第三方SDK分享文件
1 ...
iOS小技能之字典转模及对象相等性示例详解
目录前言I 字典转模型1.1 字典转模型的实现步骤1.2 字典转模型的过程II 对象的相等性 & 本体性2.1 相等性检查2.2 Foundation 框架中,自己实现的相等性检查2.3 字符串驻留III 代码重构(前提是已经实现了基本功能)see also前言
字典转模型
/** 通常实现字典实例化模型,都实现了以下模型的实例化方法*/
//使用字典实例化模 ...
上架app store流程详解
本篇文章主要介绍使用Hbuildx开发的移动端项目,打包以及上传值苹果应用商店全部流程。
一、条件1.苹果App Store上传应用流程详解,在向AppStore提交应用之前,开发者首先要成为苹果iOS开发者项目的成员,每年向苹果缴纳99美元或199美元的费用(具体申请方法后期更新)。其次创建相应的证书 Development是开发环境下的证书 ...
使用 Swift Package 插件生成代码的示例详解
目录前言是什么让我再次关注到它?实施细节让我们写一些代码吧编写可执行文件创建该插件让我们看下结果前言
不久前,我正在工作中开发一项新服务,该服务由 Swift Package 组成,该 Package 公开了一个类似于Decodable协议,供我们应用程序的其余部分使用。事实上,该协议是从Decodable本身继承下来的,看起来像这样:
Fe ...
Compose声明式代码语法对比React Flutter SwiftUI
目录前言1.Stateless 组件2.Stateful 组件3. 控制流语句4. 生命周期5. 装饰/样式总结前言
Comopse 与 React、Flutter、SwiftUI 同属声明式 UI 框架,有着相同的设计理念和相似的实现原理,但是 Compose 的 API 设计要更加简洁。
本文就这几个框架在代码上做一个对比,感受一下 Compose 超高的代码效率。
1.Stateless 组件
...
SwiftUI智能家居开关灯页面搭建示例
目录项目背景项目搭建背景卡片页面标题灯视图开关按钮整体布局项目展示本章代码项目背景
晚上临睡前看着头顶上的卧室灯,圆圆的,点击开灯亮起,再点击关灯熄灭,以此反复。
突然大脑里有了一个无聊的灵感,干脆做一个开关灯的App,可以打发无聊的时间。
说干就干。
项目搭建
首先,创建一个新的SwiftUI项目,命名为SmartLi ...
Swift超详细讲解指针
目录Swift指针Unsafe Pointer对照Objective-C例子Swift指针Unsafe Pointer
如果不是只读,可以修改 ( 写入 ),就加一个 Mutable,
如果没有具体的类型( 通过泛型的方式 ),就加一个 Raw,
如果不是一个单独的对象 ( 指向集合类型 ),就加上 buffer.
Unsafe [ Mutable ] [ Raw ] [ Buffer ] Pointer [ ]
苹果没有编译保 ...
iOS基于JSCore的混合开发
1、iOS 基于JSCore的混合开发
JSCore 简介
JSCore的角色是做为一个桥梁,其实就是 Bridge,来协调JS与Native通信的。浏览器内核的模块主要是由渲染引擎和 JS 引擎组成,其中 JSCore 就是一种独立的 JS 引擎。Apple 通过将 WebKit 的 JS 引擎用 OC 封装,提供了一套 JS 运行环境以及 Native 与 JS 数据类型之间的转 ...
15种优秀的iOS APP开发工具推荐
多年来,移动应用程序开发平台充分利用了针对Android和iOS的强大应用程序的快速开发。移动应用程序的开发获得了巨大的动力,并且经历了巨大的变革。
iOS占据了移动市场的很大一部分。iOS的忠实客户需要开发人员对iOS移动应用程序开发进行投资。在ios开发上进行了大量的投资,并且在过去十年中,iOS取得了巨大的飞跃。
最初 ...
Flutter iOS开发OC混编Swift动态库和静态库问题填坑
目录引言OC接入Swift 插件静态库和 Framework 区别新的问题: non-modular heade不能在Framework Module中使用非Modular 的 Header引言
Flutter 在 iOS 上的编译问题相信大家多多少少遇到过,不知道大家在搜索这方便的问题时,得到的答案是不是让你 clean 或者 install 多几次,很多时候就算解决完问题,也是处于薛定谔的状 ...
EvenLoop模型在iOS的RunLoop应用示例
目录引言线程保活停止Runloop设置超时时间直接停止延迟加载图片卡顿监测CADisplayLink(FPS)子线程Ping实时监控Crash防护Matrix框架总结引言
Runloop在iOS中是一个很重要的组成部分,对于任何单线程的UI模型都必须使用EvenLoop才可以连续处理不同的事件,而RunLoop就是EvenLoop模型在iOS中的实现。在前面的几篇文章中,我已 ...