- 博客(110)
- 资源 (18)
- 收藏
- 关注
原创 iOS开发笔记之九十五——Swift中的常见高阶函数及实现
本文将介绍这些函数的原理和用法。map是一种常见的高阶函数,它可以将一个集合中的每个元素映射到另一个集合中,然后返回一个新的集合。filter是一种常见的高阶函数,它可以从一个集合中过滤出符合条件的元素,然后返回一个新的集合。在这个例子中,我们将一个包含三个数组的数组扁平化成一个单一的数组,然后将结果存储在一个新的数组中。在这个例子中,我们将原始的数组中的所有偶数元素过滤出来,然后将结果存储在一个新的数组中。在这个例子中,我们将原始的数组中的每个元素乘以2,然后将结果存储在一个新的数组中。
2023-02-14 14:51:29 361
原创 Python开发笔记之三——IncompleteRead的错误解决
在执行一个爬虫程序时,出现了IncompleteRead的报错:IncompleteRead: IncompleteRead(196171 bytes read, 209626 more expected)download代码如下:
2022-12-02 16:35:05 4201 1
原创 iOS开发笔记之九十四——Swift中的可选类型Optional
一、Optional类型的概念Swift中为何要引入Optional的概念,官方文档中有介绍:Swift also introduces optional types, which handle the absence of a value. Optionals say either “thereisa value, and it equalsx” or “thereisn’ta value at all”. Using optionals is similar to using...
2021-09-23 17:04:35 4558
原创 iOS开发笔记之九十三——Swift中的fallthrough关键字
Fallthrough是Swift语言的一种新特性,由于Swift语句可以省略break的关键字,而且它不会继续往下执行。但是在其他语言中省去break会顺序执行,直到碰到break或者default才完成。Swift语言为了更加灵活的应对多种场景,提供了fallthrough关键字供我们选择使用。演示示例如下:var index = 10switch index { case 100 : print( "index为100") case 10,15 :
2021-09-14 16:02:49 2965
原创 iOS开发笔记之九十二——Swift中的guard关键字
guard中文有"守护"的意思,guard关键字在官方文档中的具体解释如下:“A guard statement, like an if statement, executes statements depending on the Boolean value of an expression. You use a guard statement to require that a condition must be true in order for the code after the gua
2021-09-14 15:23:07 3324
原创 iOS开发笔记之九十一——Swift中的mutating关键字
mutating单词翻译过来有“可变化,可改变”的意思。它主要用在Swift中的:结构体(struct)、枚举(enum) 扩展(extension)、协议(protocol)中修饰方法Swift结构体(struct)、枚举(enum) 中均可以包含类方法和实例方法Swift官方是不建议在结构体(struct)、枚举(enum)的普通方法里修改属性变量。但是,在方法前面添加 mutating 关键字之后就可以在对应的 mutating代理方法内修改。示例1:protocol Per
2021-09-14 11:07:55 7879
原创 iOS开发笔记之九十——在OC项目中支持Swift
*****阅读完此文,大概需要5分钟******这个过程不复杂,但是有些问题遇到了可能就会捣弄很久,特此输出此文,希望可以帮助大家快速解决相应的问题。一、配置步骤1、主项目中添加工程名-Bridging-Header.h这一步可以如其他文章介绍的那样,先添加Test.swift然后,Xcode会提醒你添加对应的-Bridging-Header文件的。2、配置工程Build Settings设置Defines Module为Yes 设置Podfile,如下:use_modular
2021-08-19 11:18:15 11494 1
原创 iOS开发笔记之八十九——Swift中的闭包
*****阅读完此文,大概需要5分钟******一、闭包的基本概念与写法1、Swift中闭包需要对比OC的block:OC的基本定义与写法:返回值(^闭包名称)(参数类型 参数名) = ^(参数类型 参数名){函数体};void(^XXBlock)(int a) = ^(int a){ NSLog(@"hello");};Swift基本定义与写法: {(参数:参数类型)->返回值类型 in 函数体}如果设置了返回值,记得返回对应类型的值let test =..
2021-08-17 19:23:06 11381 1
原创 iOS开发笔记之八十八——pod update卡在Updating local specs repositories的解决
你如果直接搜索,很多文章会告诉你执行下面两个命令: pod update --verbose --no-repo-update pod install --verbose --no-repo-update对于有些情况执行以上命令可以解决,但是如果你的工程依赖的Pod有版本升级时,你本地Podfile中的版本可能就会对不上,直接执行上面命令可能会报错,这时候我们可以尝试手动更新local specs。步骤如下:1、进入cd ~/.cocoapods/repos目录,2、把对应的repos分
2021-08-11 19:08:01 6016
原创 iOS开发笔记之八十七——Swift中的值类型
*****阅读完此文,大概需要3分钟******这一概念在OC中就已经存在。Struct可以想像class一样定义属性、方法,可以遵循协议,支持扩展等。一、值类型(struct)与引用类型(class)的不同点1、内存管理方式不同,值类型一般分配在栈上,引用类型一般分配在堆上。这就意味着引用类型分配与释放将会是个复杂的过程,值类型一般没有析构方法;2、引用类型有丰富的对象行为,可以继承,被多个所有者同时持有。将一个引用赋值给一个新的变量或者传递给一个函数的时候,它们都指向同一个实例。3、
2021-08-06 18:44:13 13136
原创 iOS开发笔记之八十六——组件化Pod支持多源配置
一、背景一个组件化的Pod代码仓库,常常会被多个业务场景使用,但是不同业务的场景需求不同,需要的代码也不同,为了更加灵活地支持多种场景,常常会采取以下两种办法:(1)继续细化拆分多个Pod(2)使用subspec方式进行代码管理。目前这两种方式都有它的弊端。第一种,继续细化拆分多个Pod如上图,原来的一个Pod要拆分四个“物理”Pod,如果继续细化拆分多个Pod,除了会导致过多的Pod产生,会管理越来越多的依赖关系。第二种,使用subspec方式进行代码管理sub..
2021-08-03 11:37:07 5823 3
原创 iOS开发笔记之八十五——带悬停效果页面的搭建方案总结
一、背景上图为大众点评App首页带有悬停效果的页面是App中最为常见的页面了,几乎任意一款主流app都会有这种页面。这种页面要求整个页面可以滑动,当滑倒一定高度时,要求某一部分做悬停,然后开始滑动下部的列表;这种页面我在业务中不止一次碰到,因为每次碰到都会因为调试花费较多时间;与此同时,这个页面框架较为复杂,不太好抽象出框架下沉,所以特意整理输出了一些方案,供大家参考,以便再碰到时,可以快速搭建这种页面;二、搭建方案这种页面方案不是唯一的,目前把自己开发中调研过的集中方案介绍一下,每..
2021-07-28 16:11:43 13796
原创 完美程序员的十种特质(转)
这是在我刚毕业时收藏的一篇文章,自己一直把它放在我的电脑桌面上,曾有段时间几乎每天都会看一篇,以此来激励自己,最近打开老电脑,再次看到这些文字,已经在这个行业摸打滚爬了7年 多了,感慨了许多,不知道自己做到了多少,这次发出来,与你我共勉。完美程序员的每种品质都有一个范围,这个范围取决于具体的问题和背景。没有能解决所有问题的完美程序员(至少在我们这个星球上),并且对于特定问题,完美程序员应该具有以下品质: 1. 才智非凡 - 能够理解问题、能够用清晰可读的代码翻译并表达想法、善于分析并且逻辑思维能力
2021-06-29 19:32:18 4848 1
原创 iOS开发笔记之八十四——OC代码自动格式化的探究
一、背景代码风格人各有异,而且开发中复制粘贴的代码也很多,自己虽然常常开发后会敲一下快捷键control+i(Editor-Structure-Re-Indent),但是还是会忘记;所以想着是不是可以有一套自动化工具,可以敲个脚本就把代码给格式化了(至少可以把缩进给解决了);下面是我调研的几种思路和方案,它们主要是:Control+i的命令化(不可行或者说没搞定) 利用Vim的格式化功能(可行,不是很推荐) Clang-format的格式化代码功能(可行,推荐此种)二、利用Vim的格...
2021-04-13 19:44:20 13847
原创 iOS开发笔记之八十三——iOS面试总结《三》之一道看似简单的面试题
******阅读完此文,大概需要3分钟******一、前言之前一次面试中,一个面试官在几乎面试到最后时,“漫不经心”地抛给了我一道题目:一个整型变量起始值是0,两个线程分别对它做+1操作100次,最终的值是多少?我第一反应时,是不是面试官最后没有题目问了,随心的问了一句,后来我才发现,这是一道看起来很简单的题目,其实充满了坑坑洼洼的题目,他对面试者的知识考查以及反应能力都有考察到。二、解题:面试官题目描述给的不多,目前只有:“整型变量i=0”、“两个线程”、“分别100次的+1操作”
2021-04-12 19:37:30 12281
原创 一款简易的git分支清理工具branchClean
一、背景一个项目久了,乱七八糟的分支就会很多,留下大量的无用分支。特意写了个小脚本用来批量清理分支。为了防止可以顺利运行脚本,故意没有用python或ruby去写,改用了shell脚本,便于直接运行。二、脚本使用执行sh branchClean.sh --help或者sh branchClean.sh -h如下:➜ MDProject git:(master) ✗ sh branchClean.sh --help 这是一个git分支清理工具,默认包含: '
2021-04-08 22:30:57 12841
原创 iOS开发笔记之八十二——2021 iOS面试总结《二》之进击篇
继上次写的2020 iOS面试总结《一》已经过去很久了,在这段时间内不断有人给我私信,问我为啥没有第二部了,主要是入职了新公司后工作比较繁忙,加上自己比较懒,一直没有继续写了,前阵子打开公众号发现,突然一下子多了那么人关注,令我有点意外,决定继续写下去。这篇文章,我主要介绍我在面试过程中如何进行的准备、要不要找猎头等这些方面进行介绍。...
2021-03-27 13:24:07 12928
原创 iOS开发笔记之八十一——2020 iOS面试总结《一》之干货篇
******阅读完此文,大概需要5分钟******这是我毕业之后第三次开始找工作了,适逢2019年底,我清楚地知道,iOS开发已经不是很景气了,尽管自己有名校以及大厂背景,但是自己一点都没有把握,自己上一份工作是小厂,每天都很焦虑,知道后面形势不好,不想自己陷入被动的局面,所以自己裸辞全面投入了面试准备,目标也很明确,进稳定的大厂。现在目标已经达成,我想分两篇文章来描述这个过程,留给还在路上的朋友。这一篇文章,我主要把面试的一些题目,整理了一下发了出来,都是自己亲身经历的,由于时间有点久了,所以有些信息
2020-07-12 22:42:20 12522
原创 iOS开发笔记之八十——单例的总结笔记
******阅读完此文,大概需要10分钟******一、单例的创建#import "MDInstanceManager.h" @implementation MDInstanceManager static MDInstanceManager *shareInstance = nil;static dispatch_once_t onceToken; + (instancetype)shareInstance{ dispatch_once(&onceToken, ^
2020-07-01 19:19:40 12804
原创 iOS开发笔记之七十九——读写线程锁介绍(一)
一、读写锁在多线程环境下,我们经常会遇到读写同步的问题。常见的做法就是将读写做成互斥操作,但是这样会降低读写性能。通常情况下我们希望读操作之间是不互斥的,这个时候就需要用到读写锁了。简单来说,读写锁要做的就是保证:读与读不互斥 读与写互斥 写与写互斥二、GCD提供的读写锁GCD的并发队列有一个Barrier Block的概念,关于Barrier Block,Apple给出的解释如...
2019-11-26 20:52:43 11646
原创 iOS开发笔记之七十八——优化git clone/pod install等下载速度慢
一、问题经常碰到从github上拉去仓库会很慢的情况,无论是git clone一个仓库,还是pod install集成你的项目时,速度极其慢的情况,例如:git clone https://github.com/facebook/folly.git这个库,过了半小时,几KB的速度,令人十分捉急:参考以下文章,的确可以大幅度提升下载速度:解决git clone速度慢的问题...
2019-11-01 23:02:36 1459
原创 iOS开发笔记之七十七——关于UIWindow,你需要知道这些
一、基本特性1、UIWindow是一种UIView,但是它是所有用户界面的最顶层背景View,不同于普通的View,它具有事件(Event)的分发能力,是响应链的开始的起点。所以,当我们的应用启动时,我们须要手动提供一个main window给我们的应用。当然,如果你的项目是基于Storyboards的,Storyboards在创建时默认会提供window;2、window的显示需要通过提...
2018-09-19 16:46:02 10571
原创 iOS开发笔记之七十六——轻量级组件化路由方案MDPageMaster(二)
******阅读完此文,大概需要20分钟******一、项目源码XYPageMaster是为了实现VivaVideo家族产品组件化的轻量级Router解决方案,有了它业务页面之间的跳转不在相互依赖,在业务项目之间解耦起到重要作用。在开发过程中,XYPageMaster参考了原大众点评App的路由方案,同时也调研了市场上主流的几种Router方案,它的源码地址:https://github....
2018-09-01 14:51:00 12551
原创 iOS开发笔记之七十五——轻量级组件化路由方案MDPageMaster(一)
******阅读完此文,大概需要15分钟******一、项目背景一套完备的路由方案是推进VivaVideo产品的组件化进程前提,为了能够为VideoVideo量身定做一套适合自己的路由方案,我做了一定的调研分析,我特意找了市场几款主流的路由方案进行简单的分析比对,希望可以集各家所长,它们有JLRouter、MGJRouter、CTMediator等,分析的比较浅陋,如有不准确的地方,可以及...
2018-09-01 14:15:38 10902
原创 iOS开发笔记之七十四——FRP与RAC进阶篇(数据黑白板ReactiveDataBoard的介绍)
******阅读完此文,大概需要30分钟******一、简介ReactiveDataBoard是一款已经比较成熟的基于RAC的响应式编程组件,它主要用来实现任意模块之间的数据通讯,它可以替代原生的Notification、KVO,delegate、NSUserdefault等数值传递方式。因为它除了可以实时传递数据,比起Notification、KVO等,实现相同的功能,ReactiveD...
2018-08-19 20:17:06 12590
原创 iOS开发笔记之七十三——基于状态机的页面构建方案
******阅读完此文,大概需要20分钟******一、简介在美团点评时,页面基本都是列表页、详情页这类页面,所以以UIScollView/UITableView这类可以进行信息平铺的手段搭建页面为主。我之前也输出过这种页面的一种方案https://blog.csdn.net/lizitao/article/details/72803196,这种基于模块化,可以横向或者纵向平铺展示的方案还...
2018-07-15 18:44:56 10785 1
原创 iOS开发笔记之七十二——一种轻量级的缓存方案MDEasyCache
******阅读完此文,大概需要5分钟******一、简介有人可能会问,无论是图片缓存还是文件缓存都有比较成熟的方案了,例如SDImageCache、TMCache/PinCache,为什么还要自己弄一套,其实这也是考虑到产品诉求的,我们公司对产品的轻量化有较高的要求。我们常常为了某个单一功能就会引入一个开源库进来,大部分代码逻辑用不到,而且一旦开源库出了bug,维护起来比较麻烦。所以在条...
2018-06-21 19:47:38 4948
原创 iOS开发笔记之七十一——发布私有库到Github
******阅读完此文,大概需要10分钟******其实这种过程不复杂,但是每次都会忘记那几个命令行,所以决定借此文档进行一次归档记录,也希望能帮到读者。下面以项目MDCommonKit为例子:1、在Github上repository MDCommonKit并clone到本地;2、再找个地方,mkdirprojectName然后cd进去,执行如下命令,并按照如下进行选择:pod...
2018-06-18 12:03:03 7940
原创 为什么你会感觉程序员的情商普遍偏低?
******阅读完此文,大概需要5分钟******不知道你是否潜意识里会有以下认同感:1、善于表达、甚至能够滔滔不绝、甜言蜜语的人,一定是情商高的;2、不善言语表达的人、甚至有点孤僻的人,一定是情商低的;要弄明白这些问题,首先我们需要弄明白到底什么是情商。我记得在中学时,有一位老师这样说过,“人的精力是有限的,人与人之间的关系越复杂,人与书本之间的关系就会越趋于简...
2018-02-14 22:47:39 8091 3
原创 iOS开发笔记之七十——如何访问对象的私有方法和变量
Objective-C对象的变量和方法本身其实没有绝对的私有和公有之分。我们可以利用OC的runtime动态特性,访问对象的方法和属性。我们可以结合以下实例方法演示如下:一、我们构造父类MDFather如下:.h文件如下#import @interface MDFather : NSObject@end.m文件如下:#import "MDFather.h
2018-02-04 13:07:52 4380
原创 iOS开发笔记之六十九——FRP与RAC介绍(二)
******阅读完此文,大概需要20分钟******本篇章主要以介绍RAC的常见操作、常见使用场景、双向绑定、RACCommd等相关内容。一、RACSignal信号的过滤、筛选、合并等常见操作示例代码如下:- (void)coldSignalTest{ //信号的创建 RACSignal *signal = [RACSignal createSignal:^RA...
2018-01-08 10:07:37 11581
原创 iOS开发笔记之六十八——FRP与RAC介绍(一)
******阅读完此文,大概需要60分钟******一、FRP的概念RAC(ReactiveCocoa)是由GitHub团队开发的一套基于Cocoa的FRP框架。提起FRP,即Functional Reactive Programming(函数式响应式编程),几乎在每个领域都有广泛的应用,例如android或者后端开发中有RxJava,尤其是在前端的领域中(react、ajax、v
2017-12-05 16:37:34 11541 1
原创 iOS开发笔记之六十七——Category使用过程中的一些注意事项
******阅读完此文,大概需要10分钟******一、不同Category中同名方法的加载与执行顺序1、先来看看如下的例子,针对TestClass类有两个Category分别为TestClass+A、TestClass+B,类结构如下:而打印结果始终如下:2、Category的方法执行原理
2017-08-22 10:57:32 8352
原创 iOS开发笔记之六十六——基于Json的页面动态化方案
******阅读完此文,大概需要15分钟******一、需求场景iOS的动态化一直是工程师们不断致力的方向,尽管JSPatch等动态化方案被苹果否掉之后,类似阿里Weex、点评Picasso这种方案开始成为动态化的另一个重要方向,它们都是通过在App端实现一套JS的引擎,解析js生成Native页面的原理方式,从而达到页面动态化的目的,如果需要复杂的交互App端还需要依赖jscore,基本...
2017-07-09 15:09:33 13525 2
原创 iOS开发笔记之六十五——两种截屏方案的对比
******阅读完此文,大概需要3分钟******业务开发中常常需要截屏生成一张UIView的Image,我们前期就做了一个需要对UIView进行截屏的需求,iOS上截屏的方案有多种,因为我们需要控制图片的分辨率,防止图片过大,所以我们采取了两种方案对UIView进行截屏;第一种:renderInContext方式,主要代码如下:- (UIImage *)convertViewToIm
2017-07-09 11:26:31 13419
原创 iOS开发笔记之六十四——基于UIView模块化组件方案
******阅读完此文,大概需要20分钟******一、方案背景有这么一个需求,需要做一个展示信息详情页,内容可能会比较多,超过一屏,最终还需要生成一张完整的详情页截图(UIImage), 如果我们直接基于UIScrollView(UITableView)去截屏,只会生成UIScrollView的frame的size大小的图片,不能生成contentSize大小的图片,所以,我们需要基...
2017-05-29 18:10:15 12065
算法导论第二版课后答案(完全版)
2011-12-28
学生作业提交系统ASP+access数据库
2011-05-19
编译原理实验代码 C语言
2010-06-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人