- 博客(478)
- 资源 (52)
- 收藏
- 关注
原创 socket入门到精通(二)心跳机制
今天和大家一块学习一下即时通讯中的心跳机制。有一些小伙伴私下问为什么不直接开始上干货。我这边个人感觉是socket是一个比较大,牵扯的知识点比较多,从外围一点一点的了解学习socket,然后完全掌握。心跳机制 心跳机制的原理很简单:客户端每隔N秒向服务端发送一个心跳消息,服务端收到心跳消息后,回复同样的心跳消息给客户端。如果服务端或客户端在M秒(M>N)内都没有收到包括心跳消息在内...
2018-09-20 16:01:14 17859
原创 socket入门到精通(一)字节顺序
从事iOS开发多年了,由于并非专业做即时通讯这块业务,即使项目中有相关的功能也是第三方封装的sdk,并不能很好的理解锻炼socket这一块相关的能力,看到网上很多的demo也只简单粗粗的说说。为了更好的学习理解socket通信相关的知识,决定边学习边把自己的学习心得和大家分享,如果有哪里理解不到位的,还请大家多多支持,共同进步。字节顺序 什么是字节顺序?字节顺序是指占内存多于一个字节类型...
2018-09-19 15:35:39 1516
原创 Vue学习从入门到精通(八)按键事件绑定
监听键盘事件经常需要检测keyCode。Vue.js可以味v-on添加键盘修饰符,代码示例如下:<template> <div id="demo"> <input v-on:keyup.13="alertB"> <span&am
2018-09-10 08:34:56 1709
原创 Vue学习从入门到精通(七)事件处理
今天我和大家一块来学习一下Vue中的事件处理。Vue.js的事件监听一般都通过v-on指令配置在HTML中,所有的Vue.js事件处理方法和表达式都严格绑定在当前视图的ViewModel上。实际上,采用Vue提供的v-on指令有如下几点好处:通过查看HTML模版便能轻松定位JavaScript代码中对应的方法。无需在JavaScript中手动绑定事件,ViewModel和DOM完全解耦...
2018-09-06 23:14:03 713
原创 iOS混合开发调试秘籍(升级版)
之前整理过一篇关于混合开发调试的文章《iOS混合开发调试秘籍》,虽然在一定程度上解决了混合开发过程中的调试问题,但是操作比较麻烦,无法直观的进行调试。为了方便混合开发的时候进行直观的调试,我这边引入了vconsole.min.js这个文件,同时呢,在我需要测试的页面引入该文件,具体代码如下:<!DOCTYPE html><html> <
2018-09-04 13:59:20 720
原创 Mac pro更换大内存固态硬盘实践教程
最近由于mac电脑内存吃紧,安装大的软件,是不是要提示一下内存不够,内心非常的不爽。作为一款A1502版的mac,128G固态硬盘通常被称为“乞丐版”。提前做好住呢逼工作后,我周末花了一天的时间搞定这件事,为了能够帮助有类似需求的小伙伴们,我这边整理了这篇文章希望对大家有所帮助。所需工具苹果电脑拆机螺丝刀(买固态硬盘的时候会送的,提前问清楚。六个角的)防静电手环(之前买的拆机清...
2018-09-03 11:38:36 33956 9
原创 Vue学习从入门到精通(六)
今天我们来一块学习一下Vue中的过滤器。查看官网发现,Vue之前封装的一些过滤器现在已经是失效,后期大家在开发过程中用到过滤器的时候都需要自己进行定义哦,这样也好,可以避免自定义的过滤器和Vue之前封装的过滤器冲突,造成一些不必要的麻烦。什么是过滤器 什么是过滤器呢,本质上都是函数,其作用在于用户输入数据后,它能够进行处理,并返回一个数据结果。Vue.js过滤器使用时,用管道符(|)...
2018-08-26 13:15:26 1519
原创 Vue学习从入门到精通(五)
今天主要学习一下表单输入绑定。v-model指令在表单<input> <textarea> <select> 等元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新数据。 v-model会忽略所有表单元素的val
2018-08-16 09:22:41 1524
原创 Vue学习从入门到精通(四)
今天我们来学习一下计算属性。在开发中,为了简化逻辑,当某个属性的值依赖于其他属性的值时,我们可以使用计算属性。什么是计算属性 计算属性就是当其以来属性的值发生改变时,这个属性的值会自动更新,与之相关的DOM部分也自动更新。具体代码如下:<template> <div id ="example"> <input type="...
2018-08-14 19:31:20 1618 3
原创 饿了么-T技术沙龙活动感悟。
2018年8月12日,天下着暴雨,冒雨参加了由饿了么联合另外几家互联网公司举办的线下技术沙龙活动,为了不辜负自己冒雨淋湿去听讲座。特意把自己的心得体会写一下,方便自己回顾。享物说 小程序开发经验分享饿了么日志系统经验分享 享物说小程序分享的讲师是一个叫塞福的黑人小伙。由于本人不是小程序开发人员,就听了一个大概,他们的小程序是一个电商小程序,整个完整功能都做到了小程序中。其中有一点我...
2018-08-13 11:41:23 1122
原创 Reader电子书阅读器优化实战(一)
我今天主要说的电子书阅读器源码如下:https://github.com/GGGHub/Reader。首先要感谢原作者的分享,有一个完整的,能运行的电子书阅读器demo。让我们为作者的这种开源精神点赞 虽然这个电子书阅读器demo是众多开源中相对比较完善的一个,但是也已经有两年没有更新了。也存在了一些问题急需要解决。我把存在的问题梳理如下:没有重用机制,内存开销大,滑动起来反应特别...
2018-08-10 14:23:37 2568
原创 Vue学习从入门到精通(三)
这一篇文章主要说一下Vue对数组的各种操作。在说Vue之前,我们先了解一下javascript中对数组操作的常见函数。 函数 说明 push() 这个函数主要是在数组的末尾添加一个新的元素 pop() 这个函数主要是在数组的末尾删除掉一个元素 shift() 这个函数的主要是删除数组的第一个元素 unshift() 这个函数主要...
2018-08-10 11:15:56 2744 1
原创 Vue学习从入门到精通(二)
《Vue学习从入门到精通(一)》我们开启了Vue的学习之路,今天我们就来一块学习一下Vue.js中的内部指令。v-ifv-if指令可以完全根据表达式的值在DOM中生成或移除一个元素。书中源码如下:&amp;lt;template&amp;gt;&amp;lt;div id=&quot;example&quot;&amp;gt; &amp;lt;
2018-08-09 18:38:17 4592 1
原创 Vue学习从入门到精通(一)
最近公司由于业务拓展,需要进行小程序相关的开发,本着朝全栈开发者努力,决定学习下Vue,去年csdn送了一本《Vue.js权威指南》,那就从这本书开始练起来吧。哟吼。一,环境搭建今天主要说一下如何搭建环境,以及如何运行。1,npm安装brew install npm如果brew没有安装的话,大家可以brew如何安装哦,这里就不再详细说明了。...
2018-08-08 18:54:32 53759 35
转载 iOS开发之CollectionView 在iOS 10 之后重用的坑
最近在用到collectionView的时候,由于collectionViewCell尺寸是整个屏幕大小,在滑动的时候发现内容刷新对不上号,排查自己的数据后,发现数据正常无误,后来通过一番搜索发现是ios 10以后优化的重用机制造成的。具体修改如下:if (@available(iOS 10.0,*)) { self.collectionView.prefetchingE...
2018-08-06 18:37:28 2512
转载 ios开发Protobuf入门到精通
之前公司的app中的埋点数据传输是通过json进行传输的,对流量消耗比较大,考虑到降低流量消耗的要求,决定用Protobuf对传输的数据进行压缩处理。主要是考虑到Protobuf应用比较广泛,而且一直有谷歌在维护。中途停止维护的可能性较小。下面来和大家介绍一下Protobuf。
2018-07-31 18:12:52 1231
原创 iOS组件化之AppDelegate中的常见处理。
在组件化开发的过程中,在app运行期间,app可能处于前台,后台,以及两个之间的过渡状态。这些状态的呈现处理一般是在AppDelegate中进行处理的,但是进行组件化后,如果业务组件中的处理逻辑放在AppDelegate中,你会发现解耦无从做起。针对这种情况我们来梳理下需求。1,存在业务组件在某些时间段需要进入后台的处理。以及前后台切换的处理。 在实际在开发过程中,比如音乐播放器组件...
2018-07-31 15:37:55 2598
原创 iOS组件化开发之jenkins自动打包
在进行iOS组件化开发的过程中,自动化打包是必不可少的。很多小伙伴会抱怨说,没有打包机,老板比较抠门,针对这种情况,个人感觉还是换一家公司吧, 打包机都不愿意购买的公司,对于提高效率的重视程度不够,还搞什么组件化开发呢。当然了我们还是要努力争取一下,说服somebody去给我们买机器设备。毕竟开展组件化开发对自己对团队都是一个很大的提升机遇。当然了,基于我这边的条件有限,我这边开展的自动化打包...
2018-07-31 11:43:35 1316
原创 iOS开发之环形进度条加载动画实现
最近在开发的时候遇到一个需求,就是产品要求实现环形进度条显示进度的时候加载一个进度的效果。环形进度条的实现比较简单,代码如下:CGContextRef ctx = UIGraphicsGetCurrentContext();//获取上下文 CGPoint center = self.center; CGFloat radius = self.progressRadius;...
2018-07-28 22:32:51 3211
原创 iOS开发之实现无限滑动
在看到这个标题的时候,相信大家心里肯定会想,无限循环轮播的博客已经满天飞了,好有必要写么。这里我想声明一下,这里的无线滑动,但是数据却不循环。实现原理由于业务的需求,需要有大量的数据呈现在collectionView上,但是又不想刷新全部的数据,因此需要制定collectionView的cell的数量为有限的。针对这一种情况,我们需要保证页面刷新数据源的索引和页面滑动的索引是不致的。同...
2018-07-20 21:29:46 1269
原创 iOS开发之解决热区痛点
在进行iOS开发的过程中,经常会遇到可点击区域与显示内容的范围不一致的情况,有时要求可点击区域的范围要比可见内容的范围大;有时要求可点击区域的范围比可见内容的范围小,情形很多,这里我就不一一列举出来了,一句话总结起来就是,按钮的热区范围和按钮的可见范围存在一定的缩进关系。 为了解决这个问题,我创建了一个category文件,为UIButton绑定了一个属性@property (non...
2018-06-27 19:31:19 1253
原创 JKDataHelper升级之添加宏定义开关
JKDataHelper这个数据容错保护库,在使用中,感觉很好的解决了数据异常造成的线上app crash的现象。但是在使用的过程中仍然发现了一些问题,比如对于某些方法的拦截还有遗漏,我这次补齐了一下,另外就是在调试阶段,有的时候我不想进行容错保护,我就是想让程序出现crash,方便我定位bug。下面就来说说自己升级改动的地方吧1,补齐遗漏的方法 Class ta...
2018-06-20 11:14:17 523
原创 JKRouter更新之present带导航栏的控制器
随着JKRouter的持续更新,小伙伴们的反响不错,最近发现在app开发的过程中有一个特殊的需求就是present的控制器,带导航栏。针对这种情况,我这边对JKRouter做了升级,具体效果如下: 使用起来也非常的简单,具体代码如下: RouterOptions *options = [RouterOptions optionsWithTransformStyle:Rou...
2018-06-13 16:29:57 550
原创 iOS开发之制作自定义效果的头视图(一)
在iOS开发的过程中,我们会遇到产品给我们提出的要求,让我们做一些特殊的头视图效果。有时甚至是几种头视图效果的组合,本人也是深受其害。唉,为了摆脱困境,觉得很有必要打造一款合适的工具。以备不时之需。而关于自定义头视图,在实际的开发过程中,主要是UITableView,UICollectionView,UIScrollView这三种视图用到的较多,而UITableView,UICollectio...
2018-06-06 09:45:58 665
原创 iOS组件化开发过程中小版本管理的思考探索
在进行组件化开发的过程中,组件开发过程通常会伴随着bug修复,功能完善等等原因出现了很多的小版本,当组建功能完善稳定后,这些小版本的作用就显得不那么大了,而且随着不断的开发迭代,我们组件的小版本会越来越多,给我们对版本的判断,识别带来不必要的麻烦。为了解决这个问题,我写了一个shell脚本来解决这个问题。具体代码如下:echo "请输入要删除的pod库版本号:"#获取终端输入的版本...
2018-05-17 22:53:45 945
原创 打造属于自己app的网络过滤器(一)需求分析篇
最近一直在研究微信的app,同时呢自己搭建的一个练手网站,居然有黑客给黑掉了,让人很是无语。再联想到微信,淘宝相互屏蔽对方,以及最近的新闻抖音被微博给屏蔽了,以及几年前的XcodeGhost事件,感觉很有必要做一个网络过滤的工具,具体需求如下:一、建立篱笆,保护自己的利益 举个例子,你自己建立了一个微信讨论组,随着你自己的经营,里面组员越来越多,而且可以通过一些手段进行相关的变现...
2018-04-26 19:06:11 1721
原创 iOS开发通过微信学习hijack(一)函数劫持
前段时间通过学习WCDB,基本掌握了WCDB的使用方法,最近通过解压微信ipa包,发现里面有一个hijack.js文件。就在网上搜了一下hijack, 没想到发现了新天地,JS函数劫持。什么是js函数劫持? 函数劫持,顾名思义,即在一个函数运行之前把它劫持下来,添加我们想要的功能。当这个函数实际运行的时候,它已经不是原本的函数了,而是带上了被我们添加上去的功能。这也是我们常见的钩...
2018-04-24 17:29:45 898
原创 iOS开发通过微信学习WCDB(二)
通过《iOS开发通过微信学习WCDB(一)》这篇博客,相信大家对WCDB已经有了一个简单的了解和认识。这篇文章主要是为了进一步深入的学习数据库加密 上篇文章中提到了,自己在刚开始使用的时候没有效果,后来通过和WCDB的作者联系,了解到内容如下:WCDB如果要使用加密功能,必须在创建数据库后,没有存储数据之前,代码如下:- (void)encryptDBData{ ...
2018-04-04 13:42:45 1322 1
原创 iOS开发通过微信学习WCDB(一)
最近通过对微信ipa包解压发现微信有使用WCDB这个开源库,搜索了一下了解到WCDB(WeChat Database)是一个高效、完整、易用的移动数据库框架,基于SQLCipher,支持iOS, macOS和Android。经过分析对比,个人感觉WCDB的优势还是比较突出的。下面我就从几个方面对FMDB,Realm,WCDB,CoreData进行比较分析。由于本人从事iOS开发,对于andro...
2018-04-03 18:12:57 2867
原创 iOS开发通过分析研究知名app提高自己的能力
最近这一年来,明显的感觉到自己获取新技术,新知识的入口不再那么有效了。之前关注的很多知名的微信公众号也不再更新难得的干货文章了,CocoaChina、掘金、简书、csdn首页上也难得一见好的有关iOS开发的文章了,内心非常的不安,止步不前,进步缓慢让人感觉特别难受。一直在思索如何才能实现突破,最近终于有了点眉目,准备开通一个专栏,专门研究国内外知名app,学习,研究这些app使用的成熟的技术,...
2018-03-30 20:57:49 579
转载 iOS开发从appStore下载历史版本
在实际的开发过程中,我们经常会遇到这样的需求,比如:1)为了验证接口对往期版本的影响;2)覆盖安装测试;3)新旧版本的各种比较测试。为了保证环境统一。我们需要的必要的时候去下载往期的ipa资源。这项能力也是一名经验丰富的iOS开发者所必不可少的。我在网上找到了这篇博客地址:《iOS—-青花瓷运用-&gt;下载历史版本App》,注:我亲自验证过了,方案可行,非常感谢原作者的探索和分享。大家可以多...
2018-03-29 21:35:00 29756
转载 Mac终端命令整理
在之前通过整理《走向大神之路的必备git命令操作》这篇文章后,在日常的开发中,明显感觉自己的效率有了很大的提升。对技术的细节了解的更加的透彻。最近在进行终端的各种操作的时候,发现在终端上通过命令行执行常见的操作的时候,仍然对一些命令行不是非常的熟练,我在这里整理了一些常见的命令行。后续会不断的完善。希望在完善的过程中自己和小伙伴们能够对mac终端命令行的掌握更上一个台阶。本来打算仔细整理呢,没...
2018-03-23 18:28:31 1807
原创 JKRouter路由跳转中文使用手册
JKRouter经历多次迭代版本终于稳定了,为了方便大家接入使用,我特意写了这篇文章。之前没有了解过JKRouter的小伙伴可以先看看这连篇博客《iOS路由跳转(二)之需求分析》《JKRouter路由跳转解决了哪些问题》。1,JKRouter接入在项目中创建podfile文件,将pod &amp;amp;amp;quot;JKRouter&amp;amp;amp;quot;复制到podfile中,然后执行pod install就可以了。注:(建议从
2018-03-11 21:02:19 1688
原创 JKRouter路由跳转解决了哪些问题
2017年元旦开始构思设计路由跳转机制,中间经历了很多次的迭代,每一次迭代,都绞尽脑汁,力争做到完美,更完美。每一次迭代完了,都觉得很完美了,过了一段时间后,又发现仍然还有一些不足。然后继续构思,继续迭代。直到最近,经过不断的迭代,在自己公司中的项目中也大范围使用了。版本也基本稳定了,关于JKRouter的优点,之前在迭代的过程中也写了相关的博客,但是还不够完善。这里我重新梳理一下。1...
2018-03-10 22:11:32 759
原创 iOS组件化开发过程中的沙盒路径解决策略
在组件化开发的过程中,在业务组件中,常常会加载各种资源文件,例如png图片,mp3音频。js文件,txt文件等等。我们此时用之前常用的方法[NSBundle mainBundle] pathForResource:@"123.png" type:nil] 时发现获取不到路径了。具体原因我们下面进行详细的分解说明。 什么是NSBundle? bundle 是一个目录,其中包含了程序...
2018-03-10 17:01:18 1279
原创 WKWebView实现网页静态资源优先从本地加载
前言:最近微信的小游戏跳一跳特别的火,顺便也让h5小游戏更加的火热。另外微信小程序,以及支付宝的小程序都是用H5写的。无论是小游戏还是小程序,这些都需要加载更多的资源文件,处理更多的业务。这些都对网页加载的速度提出了较高的要求。UIWebView由于占用内存大,释放不掉一直备受诟病。而且目前是大多数的app支持的最低版本都是从iOS 8开始的。我这里主要针对WKWebView来说一下。资源...
2018-02-28 01:20:23 8318
原创 JKUIHelper之hitTest实现按钮扩大热区
原文地址:http://blog.csdn.net/hanhailong18/article/details/78994971 在iOS开发的过程中经常会遇到绘制完按钮后,需要为为为按钮扩大可点击区域的情况,由于图标已经按照UI的尺寸进行了相关的锁紧操作了,如果通过扩大按钮的rect来实现扩大按钮的可点击区域的话,又要重新调整布局。影响大,也比较麻烦。如果这样的情况多的话。很是浪费时间。为
2018-01-07 15:11:39 720
原创 iOS路由跳转(五)之JKRouter 2.0 脱胎换骨
经过一段时间的使用,以及对于需求的复杂化,JKRouter暴露出来了很多的问题。下面我就会将这些问题一一列出来。 1,不能够使用xib,storyboard文件的跳转。 由于JKRouter使用了kvc赋值以及目标UIViewController对象的创建是通过[NClassFromString(vcCalssName) new] ,但是xib,storyboard的ViewControl...
2017-12-17 23:52:33 1372
原创 ios 跳转AppStore的两种方法,以及遇到的坑
iOS跳转appStore的两种方法网上已经有很多的博客进行讲解了,主要是app内跳转相关网页,和跳出app,跳转到AppStore。相关的博客大家可以参看参考博客 为了防止参考博客实效,我把相关代码copy了一下,希望大家不要介意。1,直接跳转 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itm
2017-11-03 10:55:08 16442
OCHamcrestIOS
2015-09-29
UIWebView与 javascript的交互三
2015-04-23
UIWebView与 javascript的交互二
2015-04-22
JSPatchFixDemo
2017-02-28
Jack3DScrollDemo
2015-12-26
NPCgoPockerFrameWork_NoBug
2015-12-25
JackScrollPlayerDemo1
2015-12-25
JackScrollPlayerDemo
2015-12-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人