-
iOS 主题/皮肤之 SakuraKit
前言目前市场上很多 App 都有主题变更、皮肤切换的功能。随着项目代码量的不断增长,业务不断完善,功能性代码逐渐趋于模块化,尤其是在多人协作开发同一个项目时,模块解耦尤为重要,同时,公共基础库的功能性代码使用越简单越好。前段时间在维护旧项目时,收到 App 主题变更、皮肤切换的需求,其包括 App 中各种图标、色值、文字、字体等都包括在内,都需实现主题化。主要用于: 活动主题展示:比较典型的是类似京东618、天猫淘宝购物节主题变更。 用户夜间模式:类似阅读相关 App 的夜间模式,如:...…
-
What's New in Swift 4 ?
前言本文主要是笔者小结 WWDC2017 中 《What’s New in Swift》的 Session ,其中也掺杂了些《What’s New in Foundation》,仅作记录。下面步入主题。私有访问控制(”Private” Access Control) SE-0169在 Swift 4 中,private 修饰的属性可以在 Extension 中访问了,再也不要用 fileprivate 修饰属性了😎。下面我们来区分 Swift 3 与 Swift 4 中的区别。Swift...…
-
self.delegate = self?
前言在 Objective-C 项目中,不少开发者们可能会写或者曾看到过这样的代码:self.delegate = self??把自己的代理设置为自己??这种做法到底妥不妥呢?本文将采用自问自答、通俗易懂的方式讨论 self.delegate = self 这种做法是否妥当,以及这种做法将会带来的问题,或者说致命的问题。为何这么写?首先,我们先回顾一下 Delegate 的出现的原因是什么呢?再反思一下,我们为何会这么写呢?以及出现的场景有哪些?笔者觉得 Delegate 模式其实就是 N...…
-
iOS 输入限制之 InputKit
前言最近接手了两个 O2O 的老项目,其中的 Bug 也不言而喻,单看项目中的布局就有 n 种不同的方式,有用纯代码的,有用 Masonry 的,有用 VFL 的,也有用 Xib 的,更有用代码约束等等等,🐮。不扯远了,回归正题。由于这两个项目是 O2O 项目,因此针对输入组件的限制相比其他类型的项目要多一些,比如商品价格输入(如:保留3位整数,2位小数等)、买家留言字数限制、不能输入中文、不能输入英文、只能输入数字等等限制。于是输入限制 InputKit 诞生了!本文主要简单介绍 Inp...…
-
Objective-C 中的对象、类、元类
前言现在写文章拖延症特别严重啊 (😂)……本文我们将复习一下 Objective-C 中的一些关于类的知识。在开发过程中,类与对象相信大家再熟悉不过了,有时我们也会接触一个比较陌生的概念,元类(metaclass),甚至在回头来想时,发现类与对象是什么都开始犯糊涂了,本文主要探讨这三者之间的关系以及在消息转发中各自扮演的角色,希望读者看完本文能有所收获。如有不妥的地方还望大家及时帮忙纠正。什么是类?在面向对象编程语言中,类是一个非常重要的概念,理解了它,能更好的造轮子、能更好的面向对象编程...…
-
iOS 中网络请求同步
场景在开发过程中,有时候会遇到这样一些问题,比如: 在某些业务要求下,需发送同步请求。 在某些界面需请求多个接口,且各个接口返回的数据之间或者整体存在依赖关系。 ···那么在上述的这些场景下应如何发送网络请求?发同步请求 or 异步请求?请求嵌套?······本文将简单探究开发过程中网络请求同步的问题以及相关注意点。NSURLConnection 中的同步请求我们都知道 NSURLConnection 中有一个同步请求的 API :+ (NSData *)sendSynchronou...…
-
02-希尔排序(Shell Sort)--(C语言)
前言希尔排序算法其本质就是插入排序,是直接插入排序算法的一种改进,因 D.L shell 于 1959 年提出而得名,通常我们也称希尔排序为缩小增量排序,所谓增量,即将待排序的序列按该增量分割一个或多个子序列,所谓缩小,即当以某个增量分成的所有子序列都排序完后,增量会逐渐缩小(ps:最后一定会缩小到1)。如:先以3为增量,则将待排序的序列下标1、4、7···分成一组,将下标为2、5、8···分成另一组···,当以3为增量分割的所有子序列都排序好后(默认递增),再以1为增量分割该序列(ps:...…
-
01-哥德巴赫猜想(Goldbach's Conjecture)--(C语言)
前言哥德巴赫猜想是(Goldbach’s Conjecture)是数论中存在最久的未解问题之一,是一个伟大的世界性的数学猜想,其基本思想可以陈述为: 任何一个大于2的偶数,都能表示成两个素数之和。如:4 = 2 + 26 = 3 + 396= 23 + 73本文将采用两种不同的算法来求出给定范围 n 内的哥德巴赫数字,并对比其时间复杂度,得出更优算法。分析根据哥德巴赫猜想,我们可以得出如下信息: 哥德巴赫数字是一个大于2的偶数。 哥德巴赫数字等于两个素数相加。思路A思路A与之前见过的...…
-
Swift3.0 中 Strings/Characters 闲聊
前言本篇文章主要浅析字符串\字符在 Swift 和 Objective-C 之间的区别及其简单用法。如有不妥的地方还望大家及时帮忙纠正。字符串判空在 swift 语言中空字符串初始化方式常用的有两种:// 方式一:let testEmptyString0 = ""// 方式二:let testEmptyString1 = String()在开发过程中,我们应该如何用正确的方式来对字符串进行判空处理呢?// 方式一:这种方式其实就是判断 characters.count 是否为0if tes...…
-
字符编码(一)
最近在看书的时候突然纠结于Unicode相关字符编码,查了一些资料,并写了这篇文章,顺带做下笔记,希望能帮到一些人。文章如果有写的不妥的或者不正确的地方还请大家纠正。Unicode 编码Unicode是一个符号集,它对世界上大部分的文字系统进行了整理、编码,使得电脑可以用更为简单的方式来呈现和处理文字。解决传统的字符编码方案的局限。历史上存在两个独立的尝试创立单一字符集的组织,即国际标准化组织(ISO)和非营利机构统一码联盟。前者开发的 ISO/IEC 10646 项目,后者开发的统一码项...…