自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

每天进步一点点

记录自己一点一滴的收获

  • 博客(43)
  • 收藏
  • 关注

原创 iOS 静态库(静态库依赖、三方依赖、资源处理等)

### 目录一、 基本概念 1. 静态库动态库区别 2. 库的版本 3. iOS 设备的CPU架构 4. ARM处理器指令集 5. i386|x86_64 指令集 6. Xcode中指令集相关选项二、打包framewor静态库 1. 创建项目-》创建静态库项目 2. 静态库如何开发调试? 3. 脚本合...

2019-01-14 20:20:50 5661

原创 iOS-工厂方法模式的运用

原文发布在个人简书,更多内容欢迎关注笔者简书 ,评论、互相交流请到简书,谢谢!设计模式这个高大上的词似乎每天都在听。设计模式在服务端设计时体现的比较明显。虽然移动端设计模式没有服务端那么明显,但是做为移动端开发人员掌握各种设计模式的思想有助于提高代码质量。今天先聊聊工厂方法模式在iOS端的实际运用。后续通过其他篇幅再聊其他的设计模式。 一些设计模式书籍里都是这样描述工厂方法模式: 定义创建对象

2017-10-24 13:05:44 3219 1

原创 iOS离线缓存架构设计方案

原文发布在个人简书,更多内容欢迎关注笔者简书 ,评论、互相交流请到简书,谢谢!现在许多主流的App都会做离线缓存功能,比如“今日头条”,“新浪微博”,每次启动项目或者刷新有网络时都是获取网络数据,网络出错时会展示缓存数据提高用户体验。笔者就结合之前见过的、以及笔者自己做缓存的方式,谈一谈离线缓存的实现方案以及其中的优缺点。“今日头条”,“新浪微博”都是缓存了第一页的数据,笔者这里也是这样。无demo

2017-10-09 11:20:01 4068

原创 iOS一键搞定自动打包并发布到AppStore和Fir

日常编译打包工作主要是以下两个目的:提交测试版本ipa给测试人员 配置好测试描述文件,然后Product -> Archive编译打包,选择Organizer,导出ad hoc 的 ipa 包。再上传到Fir等第三方平台上,然后通知测试同事进行测试。整个流程下来需要人工监守操作比较耗费时间。提交ipa包到App Store已供审核

2017-09-25 11:55:53 17183 5

原创 iOS组件化-带你一步步实现项目的组件化

组件化在业界已经炒的水深火热,关于组件化的好处和组件化的方案网上已经有大篇的文章了。笔者通过拆分一个现有的demo来简单聊一下项目实施组件化的过程(将分为上、中、下三篇)。demo可以从github下载(下载之后执行pod install )《iOS组件化(上篇)- 拆分基础组件》 《iOS组件化(中篇)-拆分业务组件》《iOS组件化(下篇)-加载XIB、图

2017-09-19 08:23:09 19494

原创 LLDB调试神器之Chisel的安装

最近看到好多人在安装chisel的时候遇到各种问题安装不上,按照github的提示,查看了一些资料还是不行。因此写一下自己当时安装chisel时遇到的问题。希望对大家有所帮助。关于chisel命令的使用网上有一堆文章,所以这里我只说一下安装时容易遇到的问题。打开chisel在github的地址,官方提示通过下面的命令进行安装。brew update (如果brew是最新的直

2016-11-02 14:37:51 2783

原创 SAE-上传本地图片到SAE的Storage(php版)

新浪的SAE处于安全期间,不支持直接将本地文件上传的SAE。 也就是无法通过选择文件按钮选择本地的文件,点击提交之后,文件不能成功提交到SAE云服务器的,那怎么办哪??需要通过SAE提供的Storage来实现,通过Sotrage的API接口将本地文件上传的SAE的Storage,然后再通过访问Storage里的文件来实现这一效果!!下面通过图片来一步步解说:1. 打

2015-06-26 23:34:52 2194

原创 HTML5本地存储-localStorage和sessionStorage

HTML5WebStorage本地存储WebStorage是用来实现客户端存储数据,大家都知道之前的Cookie就是客户端存储的一种方式,今天看一看html5新增的本地存储方式:localStorage和sessionStorage。localStorage:存储的数据会一直存在本地客户端,即使浏览器关闭了也会存在;sessionStorage: 只是针对同一个 session

2015-06-15 22:35:19 909

原创 html5拖拽-初探

闲来无事,对html5的drag-drop拖放进行了下小测试,完成拖放的过程主要是由draggable属性、ondragstart 事件、dataTransfer.setData() 方法、Ondragover 事件 、ondrop事件和dataTransfer.getData() 方法 来完成,文章中详细的说明这些属性和事件是怎么完成拖放。

2015-06-15 17:27:46 3213 1

原创 JS事件-鼠标滚轮事件

之前学习了onmouseover,onmousedown等鼠标事件,今天来看看鼠标的滚轮事件,浏览器兼容一直是让人比较恶心的事情,今天就让我们将恶心进行到底,看看这个恶心的鼠标滚轮事件! 鼠标滚轮事件在IE和谷歌浏览器Chrome下是通过onmousewheel这个事件实现的,但是火狐FF下却不识别onmousewheel,在FF下需要用DOMMouseScroll,并且必须用“事件监听”

2015-05-27 12:25:58 26793 3

原创 JS-自定义滚动条的几个实例

首先要说的就是:怎么实现一个自定义的滚动条主要步骤:1. 定义两个div,一大一小,让小div在大div上滚动2. 利用拖拽原理使小div可以滚动,这里拖拽的时候,只是改变小div的left值;3. 限制小div的滚动范围  #parent{ width: 400px;height: 30px;background

2015-05-25 18:41:27 5075 2

原创 JS-碰撞检测

一个简单的碰撞检测例子,检测div1是否和div2发生碰撞,当div1碰到div2时,改变div2的颜色,看测试图看一下分析图:当div1在div2的上边线(t2)以上的区域活动时,始终碰不上当div1在div2的右边线(r2)以右的区域活动时,始终碰不上当div1在div2的下边线(b2)以下的区域活动时,始终碰不上当div1在div2的左边线(r2)以左

2015-05-25 17:09:53 19273 3

原创 JS-闭包详解

闭包是JS中的一块硬骨头-不好啃,需要我们慢慢去咀嚼才能体会出其中的味道,嚼的不好,一不小心还容易崩牙!今天就让我们好好来咀嚼下这块硬骨头把!!!1.什么是闭包?所谓闭包:在一个函数作用域中 保留 它上级作用域的局部变量,这些局部变量不会随着上级函数的执行完毕而被销毁(个人理解)。简单的理解闭包:子函数可以使用父函数的局部变量(包括参数,因为参数也是局部变量); function

2015-05-23 20:24:12 4396

原创 JS-那些年困扰我的offsetT/L/W/H和scrollT/L/W/H......

学习过js的人,相信都曾经被这堆东西困扰:clientWidth,clientHeight,clientX,clientY,offsetX.offsetY ,offsetLeft,offsetTop ,offsetWidth,offsetHeight,scrollTop,scrollLeft 等等,看着这堆东西就开始犯晕呕吐。他们到底是干嘛滴那?今天就来让我们彻底击碎这群玩意,

2015-05-23 14:38:13 1592 1

原创 JS运动-放大缩小物体(从中心)

先来看下效果:要点:1. 将css的float定位,转换成用js的绝对定位2. 从中心放大缩小物体 主要步骤:1. 先通过css的float定位,ul宽度设置成li宽的倍数(例子中li的宽是122,没行显示3 个li,所以ul宽设置        成366)2.  利用js 获取并且设置他们初始的left 和top值3.  ul 的position:

2015-05-23 12:17:30 3642

原创 GCD高级用法-Dispatch I/O

在读取较大文件时,如果将文件分成合适的大小并使用Global Dispatch Queue 并发读取的话,应该会比一般的读取速度快不少。现在的输入/输出硬件已经可以做到一次使用多个线程更快地并发读取了。能实现这一功能的就是Dispatch I/O 和Dispatch Data。通过Dispatch I/O读写文件时,使用Global Dispatch Queue将1个文件按某个

2015-05-22 23:16:39 4622

原创 inline内联函数

一、内联函数 :内联函数是指用inline关键字修饰的函数它与普通函数所不同之处只在于函数调用的处理。普通函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;内联函数不是在调用时发生执行权转移,而是在编译时将“函数体”嵌入在每一个调用处。编译时类似宏替换,使用函数体替换调用处的函数名。调用几次就替换几次,这样省去了函数调用时的一些额外开销,比如保存和恢复函数返回地址等,

2015-05-22 22:20:54 1525

原创 JS数组-第一脚

数组的大名可以说是家喻户晓,每一个程序员和数组有着说不清理还乱的关系,数组充斥着各种语言的每个角落,javascript自然也不例外,今天就让我们来踩一踩js中的数组

2015-05-22 15:30:58 870

原创 GCD高级用法-信号量

GCD中的信号量是指 Dispatch Semaphore。所谓信号,类似于道路上的信号灯,一种用来标识等待还是通过的标志。绿灯通过,红灯等待。道路中通过信号灯的颜色标识通过和等待,而Dispatch Semaphore中通过“计数”来标识通过和等待。GCD的Dispatch Semaphore提供了三个函数操作Semaphore:  dispatch_semaphor

2015-05-22 11:25:38 6542 1

原创 JS拖拽(改变物体大小)

拖拽改变物体大小功能:拖拽黄色小div来改变绿色大div的宽和高 主要实现由三大步:1. 通过id获取到大小两个div2. 给小div添加onmousedown事件3. 在onmousedown事件给document添加onmousemove和onmouseup事件 由分析图可知,我们只需要在拖拽的时候,获取到物体不断增加的宽度值,问题就解决了

2015-05-22 10:28:52 6206 3

原创 iOS-位移枚举

枚举&位移枚举之前,我们一般都采用C语言的方式定义枚举,这种枚举可以称为普通的枚举。typedef enum{ DirectionTypeUp, DirectionTypeLeft, DirectionTypeDown, DirectionTypeRight} DirectionType;但是我们在查看苹果的SDK或者看一些第三方库时会

2015-05-22 10:09:06 3418

原创 JS-作用域划分

和其他语言不通的是,js的作用域是按函数来划分的;不像C 语言,java等高级语言,有严格的块级作用域的区分,在java中for或者if都算是一个独立的块级作用域,但是在JavaScript中if、for 语句中的花括号不是独立的作用域。JavaScript 的作用域完全是由函数来决定的。比如if (true) { var name = 'zhangsan';}console.log

2015-05-20 14:05:30 989 2

原创 JS函数-函数声明和函数表达式之间的恩怨

“函数声明”和“函数表达式”其实说白了 就是定义函数的方式函数声明:function 函数名(){.....}通过上面方式定义的函数就是函数声明 函数表达式:通过函数表达式定义函数的方式比较多1. var a = function test(){...} // 这是命名的函数表达式  var a = function(){...} // 这是匿名的函数表达式2

2015-05-19 22:46:28 1338

原创 JS面向对象-原型对象,实例对象,构造函数的关系

JS中每创建一个函数,该函数就会自动拥有一个prototype属性,为什么那?? 因为最根上的object拥有一个prototype属性,而js中所有的对象又都继承自object,所以js中所有的对象都拥有一个prototype属性,而在js中函数也是对象,所以js中每个函数也都有一个prototype属性。例如:function Person(){...} 和function Dog()

2015-05-17 22:30:17 4967

原创 js运动-完美运动框架

在上一篇的《js运动-同时运动》中说过,我们的运动框架还存在一个问题,那究竟是什么问题那?把上一篇的程序做一下调整oDiv.onmouseover = function () { //startMove(oDiv,{width:300,height:300,opacity:30}); startMove(oDiv,{width:204,height:300,opacit

2015-05-17 17:55:10 7110 3

原创 js运动-同时运动

接着上一篇 《js运动-链式运动》继续折腾 上一篇中我们的运动框架,可以完美的实现让一个物体先变宽,在变高,在变透明度.....,看似很完美了!貌似可以喝喝茶看看美女了。但是老板突然说,让你同时改变一个物体的宽高和透明度,心碎了一地!!!拿过之前的运动框架发现,无法实现让div同时又变宽,又变高,有变透明度!!最后无能为力,只好有请JSON大神出场了,不认识json

2015-05-17 16:06:55 1826

原创 js运动-链式运动

接着上一篇《js运动-任意值运动》继续折腾链式运动:一个运动接着一个运动。比如:鼠标移入div先让宽变大,接着在让高变大,接着在让透明度变化等等一系列运动连着做。废话不多说,上栗子!!  当鼠标移入div的时候,div先变宽,在变高,然后改变透明度;移出又逐次恢复到原样;实现链式运动,需要对上一篇中的startMove() 函数继续做改进function startMove

2015-05-17 14:58:35 2470

原创 js运动-任意值添加运动

回顾一下上个例子:   window.onload = function(){ var liTags = document.getElementsByTagName('li'); for(var i=0;i<liTags.length;i++){ liTags[i].timer = null;

2015-05-17 12:12:23 986

原创 js运动-offsetWidth和offsetHeight引发的血案

之前说的js运动不管是单物体运动,多物体运动,还是缓冲运动。在获取元素自身宽,高的时候用的都是offsetWidth,offsetHeight,但是这会引发一些麻烦!!因为在js中offsetWidth,offsetHeight获取的不仅仅是元素样式中定义的width,height还包括给元素设置的border和padding的值看看下面的测试例子: #div1{

2015-05-16 23:00:02 8796 2

原创 js运动-多物体运动

基本步骤1.通过getElementsByTagName获取到要做多物体运动的元素2.然后for循环遍历元素,添加事件3.定义startMove函数,需要两个参数,当前“做运动”的元素,和目标值target 注意问题:在多物体运动中,所有的东西不能公用;  window.onload = function(){ var liT

2015-05-16 17:48:11 827 1

原创 js运动-改变透明度(单物体)

除了通过改变物体的 宽,高,letf,top位置或者是运动方向来实现物体运动效果之外,改变物体的透明度,也是运动特效 window.onload = function () { var oDiv = document.getElementById('div1'); oDiv.onmousemove = function () {

2015-05-16 16:27:58 2373

原创 typedef的标准用法

很多资料对typedef的定义感觉都不是很准确,下面大概说下自己的理解。int num;上面代码的意思是:声明了一个int 类型的变量num。typedef int num;没有typedef的时候,int num;num代表的是一个int类型的变量,而加上typedef声明之后,num代表的就是类型了。typedef int num;num n1,n2;上面的代码的意思

2015-05-15 17:10:57 908

原创 Runtime之对象、类(类对象)、元类

在C++/Java/C#/OC等众多面向对象语言,它们都有着面相对象一些共有的特性,但是也都有各自的一些区别。今天我们就从运行时底层来剖析一下OC的特性。先说说OC中的类Person *person = [Person new];Dog *dog = [Dog new];Class class1 = [person class];Class class2 = [do

2015-05-15 15:13:46 3207

原创 JS神器-函数

JS中的神器-函数函数是JS的灵魂,在JavaScript中函数本身也是对象。今天就扒一扒js的函数,看看她里面到底是什么东东!要想搞函数,先的有函数,那么在JS中怎么搞一个函数出来的? 一 .定义函数的方式:第一种:function test(){ alert("I am a function");}第二种:var a = function test(

2015-05-13 22:51:36 596

原创 JS事件之事件委托

事件委托:一个事件本来是加到某些元素身上来完成一些事情,但是这些元素却委托其他元素来替它完成;比如 ul下有4个li元素,现在要给这些li添加鼠标移入移出事件完成 “改变背景” 点我 点我 点我 点我常规一般我们会这样写:得到ul然后循环为每个li添加点击事件 window.onload = functi

2015-05-12 19:12:49 738

原创 JS事件之事件流机制

众所周知JS和HTMl元素的交互几乎都是通过“事件”来完成的,事件从触发到完成响应一般分为3个阶段:捕获阶段,目标阶段,和冒泡阶段。那么事件是在捕获阶段响应 还是在冒泡阶段响应那?? 我们是可以手动设置事件是在捕获阶段响应还是在冒泡阶段响应。 理解JS的事件流机制对充分理解JS的事件至关重要,那么什么是JS的事件流那??事件流:可以理解为当事件发生时,响应事件的顺序。这个顺序就

2015-05-11 23:18:34 6058

原创 JS事件之事件对象和事件源

要想搞明白js的事件机制,必须搞清楚几个概念:事件对象,事件源,还有事件流事件对象:当事件发生时会产生事件对象,事件对象的作用是用来记录“事件发生是一些相关的信息。注意事件对象只有在事件发生时才会产生,我们无法手动创建,并且事件对象只能在处理函数内部访问,处理函数允许结束后该对象自动销毁。怎么理解那?? document.onmousemove = function

2015-05-11 23:14:18 16383 1

原创 JS事件之绑定事件

JS中的事件是js中很重要的一部分内容,充分理解事件机制是必不可少的。JS中事件分类:鼠标事件:onclick, ondbclick, onmouseover,onmousedown, onmouseup,onmousemove,onmouseout等键盘事件:onkeyup,onkeydown,onkeypress...表单事件:onsubmit,onblur,onfoucs

2015-05-11 23:06:48 12110

原创 Runtime之Ivar\Property\Method

我们打开一个类(Class),这类无非就是包含:成员变量(Ivar)、属性(Property)、方法(Method)三部分.我们可以通过Runtime底层可以获取到任意一个类Ivar,Property、Method,那应该如何获取那?

2015-05-11 20:35:47 569

原创 Socket协议和"心跳"机制

我们知道网络的3要素:主机地址(也就是常说的ip地址)、端口号(做过服务器开发的童鞋都知道,80、8080...)、传输协议。通过ip地址可以找到对应的主机,通过端口号可以找到主机上对应的程序,通过传输协议可以确定网络间是如何传入数据的...

2015-05-10 21:05:32 5454 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除