首页
Jovins
取消

App Clip

App Clip 是 WWCD20 的一大亮点。作为轻量级应用,它提供了一种“即时使用”的方式,用户无需在 App Store 下载完整的应用程序,基于苹果提供的各种唤醒方式,让用户在特定场景下很方便地体验 App 内的核心功能。 App Clip 是 App 的一小部分,因此可以使用 iOS SDK,在与完整 App 相同的 Xcode 项目中创建。每个轻 App 都是轻量级,即便尚未安...

集成SwiftLint到Xcode项目

前言 SwiftLint是 Realm 推出的一款 Swift 代码规范检查工具, 基本上以 Kodeco’s Swift 代码风格指南为基础, 比较容易集成到Xcode. 支持自动纠正部分代码、支持自定义规则、可禁用或者开启某一些规则. 在个人开发中可以很好规范和改善代码质量;在团队开发中可以很好的规范团队的代码风格,避免语法层面的一些低级错误,提高代码质量,同时也提高团队Co...

关于PDFKit实现的iBook

前言 iOS 11 后苹果在iOS平台开放了PDFKit SDK,该框架主要是用来显示和操作PDF文件的,本次通过学习PDFKit实现了展示PDF内容、缩略图、目录、收藏和搜索等功能。 官方文档 代码 iBook,纯Swift编写,想学习PDFKit,可以点一下Star学习学习。 PDFKit PDFKit中的文档说明 // Views PDFView: PDFView用来展示pdf文...

Swift 中的高阶函数

前言 在我们Swift日常开发过程中,经常有用到高阶函数来简化处理一些数组、集合的数据。本篇文章主要分析日常用到的高阶函数的特点和用法。 高阶函数的定义 接收一个或多个函数当作参数 把一个函数当作返回值 至少满足以上条件中的一个的函数,那么这个函数就被称作高阶函数。 高阶函数的优势 简化代码 使逻辑更加清晰 当数据比较大的时候,高阶函数会比传统实现更快,...

Swift 技术栈

在iOS研发这条路上已经有5年有余了,在最近四年多里都在使用Swift 开发项目,目前也在学习SwiftUI。Swift 技术栈如下图: 前言 在App研发过程中,特别是在App架构设计有几点比较重要: 代码的可读性 SwiftLint规范编写代码 代码的扩展性 产品思维能力 设计规范 技...

分糖果

给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的种类数。 示例 1: 输入: candies = [1,1,2,2,3,3] 输出: 3 解析: 一共有三种种类的糖果,每一种都有两个。 最优分配方案:妹妹获得[1,2,3],弟弟也获得[1,2,3]。这样使妹妹获得...

Moya框架浅析

关于Moya Moya是一个网络抽象层,它在底层将Alamofire进行封装,对外提供更简洁的接口供开发者调用。在以往的Objective-C中,大部分开发者会使用AFNetworking进行网络请求,当业务复杂一些时,会对AFNetworking进行二次封装,编写一个适用于自己项目的网络抽象层。在Objective-C中,有著名的YTKNetwork,它将AFNetworking封装...

缺失数字

给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。 示例 1: 输入: [3,0,1] 输出: 2 示例 2: 输入: [9,6,4,2,3,5,7,0,1] 输出: 8 说明: 你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现? 异或法 只出现一次的数字: 给定一个非空整数数组,...

Alamofire 源码剖析

大部分App都需要跟服务端进行数据交互,那么App是怎样进行数据交互的呢?通常情况下都是通过 HTTPS/HTTP 来完成的,Swift为我们封装一个URLSession非常实用的的类来进行数据通信,但是对于比较复杂的网络请求,我们还需要把网络层跟业务层分离开来,这样就必须对URLSession进行再一起封装,对 method ,header ,上传,下载,错误处理等再做一层处理。那么本文介...

最后一个单词的长度

给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。 如果不存在最后一个单词,请返回 0 。 说明 一个单词是指由字母组成,但不包含任何空格的字符串。 示例: 输入: "Hello World" 输出: 5 注意: 大多数人容易忽略考虑末尾是空格的情况。 思路 向后迭代字符串,也就是先将字符串反转,然后逐个遍历字符串,利用空格作为判断条件...