自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 vue-express-mogodb_SPA 使用 js 搞定前后端。

1.express-cli使用 express 脚手架生成一个空的项目, 全局安装:npm install express-generator -g到项目目录下生成express <myapp>生成的目录结构.├── app.js├── bin│ └── www├── package.json├── public│ ├── images│ ├── javascripts

2017-03-19 14:01:45 1405

原创 MEVN 架构(MongoDB + Express + Vue + NODEJS)制作网站

MEVN 架构(MongoDB + Express + Vue + NODEJS)制作网站MEVN 架构是 MongoDB + Express + Vue + NODEJS 搭建的网站架构。四个部分都可以用JavaScript实现。一个完整的网站服务架构包括web frame, web server, Database, 以及前端展示实现。这里有一篇知乎答案,讲一个网站的整个访问流程,讲的很清晰。

2017-02-07 20:48:12 8481

原创 关于Weex与iOS开发者的思考

关于Weex与iOS开发者的思考1. 不同的开发模式从去年开始,移动端的开发模式就有很多更新,包括ionic(就是后来的cordova),React Native,今年开源的Weex,原生+网页,当然最传统的还是原生开发方式。新技术是因为新需要,跨平台和混合的方式确实解决了部分的效率问题。由于公司需要我最近也研究了一下。感触颇深 在最开始,你会觉得未来如此美丽,我还需要写原生吗?我还需要多平台吗

2016-11-06 11:16:36 1897

原创 纽摄(上)

纽摄(上)摄影观察能力首先要满足摄影三要素照片要有一个鲜明的引人的主题要有一个能够充分表现主题的主体画面要简洁以突出主题。相机和镜头相机有直视取景单镜头反光照相机双镜头反光照相机一次成像。镜头可变焦点,自动聚焦可更换镜头镜头速度,进光快速度快,大光圈的镜头速度快。孔径,是用来控制进光量的。光圈大小可以由 f/2 f/16 等来表示。增大一个等级那么进光量增大一倍。f/1,

2016-07-21 10:54:56 1527

原创 策略模式

策略模式核心思想是使用多态进行不同任务的分配。 适用场景:当需要根据不同场景需求,使用不同的算法处理类似的事情(至少接口可以抽象出来为一个),就可以使用多态的特性,将对应的Strategy(策略)放入一个context,而context可以使用多态特性调用抽象出来的接口,context 可以任选,不做限定。 在iOS中的具体案例,这篇文章不错在写程序的时候,我们经常会碰到这样的场景:把一堆算法塞

2016-07-02 09:47:25 380

原创 装饰模式在iOS开发中的应用

装饰模式在iOS开发中的应用装饰模式 动态的给一个对象加一些额外的职责,就增加功能来讲,装饰模式比生成子类来讲更为灵活例如我们对网络请求的api封装,有一个APIManager,在网络请求成功之后需要通知到一个代理(一般是vc):请求成功了,数据已拿到,可以把数据交由view显示了。通常这个manager是继承了baseManager,并且在继承之后重写了 successCallBackDel

2016-06-28 21:25:29 826

翻译 Runloop

RunLoops概念runloop是线程相关的基础对象,runloop是一个被用来处理事件或者timer的循环,runloop的目的是用来让线程在需要的时候运行,并且在不需要的时候休眠。runloop的控制并不是自动的,你必须要手动管理。cocoa 和 foundation 提供了runloop对象来帮助你管理runloop,因而你不用创建。比如主线程就有自己的runloop,并且是自动运行的。子线

2016-06-19 23:07:01 340

翻译 多线程数据同步

多线程的数据同步多线程会导致数据竞争,和数据冲突,当发生多线程数据冲突的时候错误将会非常难于检查,有的时候甚至需要彻底检查一遍代码才会发现。尽量避免线程间数据共享。如果必须要交互那么就要使用同步锁来确保数据安全性。ios 提供了很多同步工具。如下原子操作原子操作并不会想线程锁那样去阻断线程,所以性能会高很多。内存屏障 Memory Barriermb(memory barrier)可以让cpu或编译

2016-06-19 23:06:30 446

翻译 ios osx 多线程编程指南

about threading programrunlooprunloop 是用来管理在线程中的异步消息的,一个runloop检测来自线程的不同的数据源,事件到来就启动线程,分发事件给runloop,runloop再把事件分发给handler,没有事件,runloop就停止了。使用runloop并不是必须的,但是使用它会使得你的程序体验更好,runloop可以用最少的资源创建一个长期运行的线程,从而

2016-06-19 23:05:44 384

原创 ios aop 和 swizzmethod

aop 和 swizzmethod面向切面编程aop将各个模块中的重复操作部分,比如权限检查,日志记录,性能统计,安全控制等提取出来进行封装。将业务逻辑处理和日志等代码分离。 处理方法:可以通过预编译和runtime时动态添加功能实现。对于ios来说可以利用ios的runtime进行方法替换和执行。适用对象减少切面(模块中重复的部分)开发量,最好的例子就是日志。减少耦合,将日志等分离出来提高

2016-06-17 15:34:52 671

原创 NSTimer 的内存泄露问题

正常来讲,我们开启一个Timer有几种办法, 1. 直接使用 + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo; 这个不用关心runloop的事情

2016-06-12 21:55:19 482

原创 vue项目架构

项目架构前几天刚刚了解了一些iOS项目的架构,觉得感慨万分,如果在我的项目成型之前读到这些文章该多好,至少我的项目架构会考虑的更全面一些。 吃一堑,长一智,所以手头上的vuejs搭建的kd云之家的项目架构要提前考虑好。 公司没有人搞过vue,前端工程师姐姐也是第一次搞,何况我这个iOS出身的。百度吧,百度不行就谷歌。搜到一个项目,和一篇文章。项目不错,文章有指导意义,虽然作者很谦虚。。。看项目

2016-05-16 23:25:58 4892 3

原创 iOS架构谈

iOS架构的重要性和缺失* 从事iOS开发几年,难得看到关于iOS架构的讨论,也导致自己在iOS架构层的东西一直比较欠缺,自己在做项目时能想到的架构层的东西也只是很浅的一块,对于项目级的架构把控一直比较无力。* 现在国内的iOS开发者也越来越多了,而且据我了解很大一部分都是跟我一样自学成才,或者培训出来的,又由于关于架构的文章少之又少,大家都不太了解。* 但是最近看到一位iOS架构师[Casa

2016-05-15 12:07:08 570

原创 nodejs?

JavaScript火了如果我没记错的话,JavaScript是去年的统计的最流行语言。 JavaScript作为函数式编程的代表体现了很多优点 函数式编程只描述在程序输入上执行的操作,不必使用临时变量保存中间结果。重点是捕捉 “是什么以及为什么”,而不是 “如何做”。与将重点放在执行连续命令上的过程性编程相比,函数式编程的重点是函数的定义而不是状态机(state machine)的实现。不

2016-05-12 10:15:13 334

原创 UIKIT点击事件中的职责链模式

职责链模式 职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。UIKIT中的点击事件传递view 之上的点击事件的处理模式是一个典型的职责链模式,由子view 向父 view 不断传递,最终找到一个可以处理点击事件的处理者

2016-05-10 23:11:02 452

原创 Jenkins+cocoapods+pgy+多版本 持续集成

持续集成? 持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。先看下我的需求持续集成,使用cocoapod管理第三方控件,使用pgy分发,同时管理三个版本(内测版,开发版,AppStore上线版),并且每个版本都要做到尽量高

2016-05-05 23:04:08 2606

原创 iOS SVN 工具和需要忽略的一些文件

工具smartSVNVersions(莲花) smartSVN功能比较多一些,用起来也比较符合程序员的习惯。Versions还是留给美工们用吧。使用的时候走正常的svn流程,checkout->update->commit忽略文件iOS项目比较头大的是pods项目管理,这里使用ignore功能去除一直会有更新的.userInterFace等文件.DS_Storexcuserdatabui

2016-03-21 10:55:38 5156 1

原创 Tab在不同页面的隐藏与不隐藏问题。

需求:ABC有三个界面,从A到B,隐藏tab栏,从B到C再把Tab显示出来。 解决方法:重写vc的hidesBottomBarWhenPushed方法需要隐藏的:- (BOOL) hidesBottomBarWhenPushed{ return (self.navigationController.topViewController == self); }不需要隐藏的:`- (BOOL

2015-09-08 20:29:54 2053

原创 CLLocationManager 定位不精确

项目中一个定位需求,发现实际取到的坐标值跟地图上显示的用户位置有偏差,就是蓝色圆点所在位置跟定位坐标不同,-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations拿到了一个有误差的坐标。但是圆点的位置是很精确的。所以想办法拿到这个位置。使用如下api-(void)mapVi

2015-06-25 09:03:26 692

原创 iOS本地闹钟提醒实现

有的时候我们在应用中需要做一个类似于闹钟提醒的功能,在每周的特定的几天中,在固定时间进行提醒。比如每周一到周五下午六点,需要吃药的时间就弹窗提醒:快去吃药!不要放弃治疗!本地固定时间提醒,需要用到 UILocalNotification 如果只是添加一次,并且设置提醒的周期为 NSCalendarUnitWeekOfYear ,那么就是每周只提醒一次。所以如果要达到每周固定星期几提醒则需要添加提醒天

2015-06-15 15:57:38 8467 1

原创 xCode模拟器出现installation failed invalid argument

前几天在网上下了一个第三方推送的 Demo 打开,编译通过,导入模拟器出现了下面的提示框 installation failed 这提示真的是让人摸不着头脑,参数不对?也不说明到底是那个不对,百度半天也没百度到,后来终于查明是 infor.plist 文件中的 Bundle identifier 为空导致的,随便填一个就可以解决问题。我看百度没有,所以写了这篇博文,让大家别走弯路了。

2015-05-30 09:31:15 5867

原创 类似于微信TabBar在二级页面滑动隐藏的效果

大部分情况下,我们的tabbar 只在一级界面上需要展示,二级页面隐藏,我们可以在进入下一级页面进行一个动画弹下的效果,类似于 RDVTabBarController 但是貌似效果不太好,弹下弹出的时候界面正在切换,会有些混乱。 我们更想要这种效果,类似于微信等应用的这种效果,点击之后 TabBar 随界面滑动消失。 一个比较简单的办法就是在一级界面的下部直接添加TabBar 进行控制。同样的使

2015-05-29 16:38:48 696

原创 In-Call StatusBar 弹出时对界面的影响

所谓 In-call StatusBar 就是 iPhone 或者 iPad 在通话状态下,statusBar 高出20Px的情况,有的时候会发现,这高出的20px会对页面布局产生影响。 UIVIewController UINavigationController UITabBarController 三种情况下的不同表现 1. UIViewController: in-Call

2015-05-29 16:17:26 865

原创 MVC 之我见

MVC 在ios开发中是始终贯穿的原则之一,使用MVC 可以更好地解耦合,对于应用的扩展性很有利。目前我的应用MVC的大概架构是Controller+Model,Handler,+块功能性View,单功能性View。分开说,Controller:控制各种弹窗消息提示(可以把各式弹窗封装到BaseViewController中,用哪种弹窗时候就可以调用了),响应View的事件并做处理,在view生命周

2015-04-29 10:26:45 379

原创 使用KVC进行字典转模型

在项目中我们一般的都会碰到Json字段请求回来进行模型封装的情况,一般我们是建立一个Model然后Model里面有Json请求回来的模型字典里的各种字段,类似 name,age…….之类的。封装的时候拿到对应的模型字典,然后分别进行各个字段的赋值,这个动作按照MVC的机制,一般都是放在模型里面进行处理。类似于-(void)toModelFromDictionary:(NSDictionary*)js

2015-04-26 19:37:35 2560

原创 有关ios自动滚动页面以显示被键盘挡住的编辑框的处理

目前手头上有一个项目,注册流程用到了很多用户信息输入,界面样式固定,时间紧急,就用的xib控件,但是这样问题就来了,控件都是固定位置的,如果键盘弹起来就把正在输入的编辑框挡住了,这样的用户体验是非常不好的,所以寻找各种解决办法,目前的比较完美的解决方案是:IQKeyboardManager + 自定义ScrollViewController首先,把IQkeyBoardManager 这个第三方的控件

2015-04-25 00:11:59 1178

原创 使用 Xcode SouceControl 进行代码的版本管理

之前一直用菊花 Version 进行 SVN 版本管理,偶然得知 Xcode 自带的SourceControl 有 SVN 和GIT 版本管理选项。就懒得用其他工具了,下面是配置方法: Git:Git 的管理比较简单,在创建项目的时候勾选好 然后在这里选择 加号, 添加你在 Github 上的对应的代码地址。第一次提交记得push选项。 SVN SVN 由于没有默认选项,就需要自己配置一下

2015-04-11 19:44:09 1372

原创 浅析 iOS 第三方框架 MBProgressHUD

https://github.com/jdg/MBProgressHUDStar 6000+ 的GitHub 开源框架浅析首先MBprogress 是把整体的HUD框分成了两部分,三个类:1. 背景( MBProgressHUD)。2. 背景上面的指示图标。(MBRoundProgressView 这个就是菊花图,MBBarProgressView 这个是一个特殊的进度

2015-04-11 14:53:16 579

空空如也

空空如也

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

TA关注的人

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