- 博客(329)
- 资源 (22)
- 收藏
- 关注
转载 iOS应用架构谈 view层的组织和调用方案
前言《iOS应用架构谈 开篇》出来之后,很多人来催我赶紧出第二篇。这一篇文章出得相当艰难,因为公司里的破事儿特别多,我自己又有点私事儿,以至于能用来写博客的时间不够充分。现在好啦,第二篇出来了。当我们开始设计View层的架构时,往往是这个App还没有开始开发,或者这个App已经发过几个版本了,然后此时需要做非常彻底的重构。一般也就是这两种时机会去做View层架构,基
2015-08-25 21:59:39 807
转载 iOS应用架构谈 开篇
缘由之前安居客iOS app的第二版架构大部分内容是我做的,期间有总结了一些经验。在将近一年之后,前同事zzz在微信朋友圈上发了一个问题:假如问你一个iOS or Android app的架构,你会从哪些方面来说呢?当时看到这个问题正好在乘公车回家的路上,闲来无聊就答了一把。在zzz在微信朋友圈上追问了几个问题之后,我觉得有必要开个博客专门来讲讲一些个人见解。其实对于iOS
2015-08-25 21:45:30 728
转载 解决升级XCode后插件失效的方法
Plugins are tagged to work with specific versions of Xcode. This means that when a new Xcode version comes out, all 3rd party plugins created by the community will fail until they add the UUID specifi
2015-08-06 23:42:40 1490
转载 iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
概览随着移动互联网的发展,如今的手机早已不是打电话、发短信那么简单了,播放音乐、视频、录音、拍照等都是很常用的功能。在iOS中对于多媒体的支持是非常强大的,无论是音视频播放、录制,还是对麦克风、摄像头的操作都提供了多套API。在今天的文章中将会对这些内容进行一一介绍:音频音效音乐音频会话录音音频队列服务视频MPMoviePlayerControllerMPMovie
2015-07-30 17:07:26 856
转载 C/C++中extern关键字详解
文章转自:http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777431.html1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C
2015-07-21 18:06:31 811
原创 动画里关于 CALayer 的一些零碎知识点
重温了一下《IOS 7 Programming: Pushing the Limits》这本书,有许多零碎的知识点,记录一下,勉强算作是学习笔记吧。CALayerPart 1动画的基本单元就是 UIView,它是非常重量级的对象,所以不能多用。但你又想让你的 UI 看起来更酷,那就需要使用 Core Animation 了。Core Animation 中最基础也最重要的部
2015-07-01 15:40:48 1435
原创 关联引用
关联引用允许开发者为任何对象附着键值数据。这种能力有很多用法,一种常见的用法是:1)让分类为属性添加方法。考虑 Person 类这个例子,假设你要用分类添加一个新属性,叫做 emailAddress。可能其他程序也用到了 Person,有时候需要电子邮箱地址,有时候不需要,分类就是很好的解决方案,可以避免在不需要的时候开销。或者 Person 不是你的,而维护者没有为你添加这个属性。不
2015-06-28 18:29:33 1420
原创 swift学习笔记二
新建一个类,作为计算器的 Model 层,这里将类命名为 CalculatorBrainimport Foundationclass CalculatorBrain { //1 private enum Op { case Operand(Double) case UnaryOperation(String, Double -> Double
2015-06-27 21:55:51 1674
原创 swift 学习笔记一
看 Developing IOS 8 Apps with swift 的时候看到一些比较有用的点,记录一下:1、将函数作为参数传递。例如:写一个两个数求和的函数:performOperation(multiply) func performOperation(operation:(Double,Double) -> Double) { if operandSta
2015-06-27 17:48:19 1219
转载 基于 CoreText 的排版引擎:进阶
本章前言在上一篇《基于 CoreText 的排版引擎:基础》中,我们学会了排版的基础知识,现在我们来增加复杂性,让我们的排版引擎支持图片和链接的点击。支持图文混排的排版引擎改造模版文件下面我们来进一步改造,让排版引擎支持对于图片的排版。在上一小节中,我们在设置模版文件的时候,就专门在模板文件里面留了一个名为type的字段,用于表示内容的类型。之前的type的值都是t
2015-06-27 17:36:48 2857
转载 基于 CoreText 的排版引擎:基础
本章前言使用 CoreText 技术,我们可以对富文本进行复杂的排版。经过一些简单的扩展,我们还可以实现对于图片,链接的点击效果。CoreText 技术相对于 UIWebView,有着更少的内存占用,以及可以在后台渲染的优点,非常适合用于内容的排版工作。本章我们将从最基本的开始,一步一步完成一个支持图文混排、支持图片和链接点击的排版引擎。CoreText 简介Cor
2015-06-27 17:11:05 3611
翻译 Model-View-ViewModel for iOS [译]
如果你已经开发一段时间的iOS应用,你一定听说过Model-View-Controller, 即MVC。MVC是构建iOS app的标准模式。然而,最近我已经越来越厌倦MVC的一些缺点。在本文,我将重温一下MVC是什么,详述它的缺点,并且告诉你一个新的方式来架构你的app:Model-View-ViewModel。拿出你的流行语bingo card(宾果卡,一种游戏卡片-译者注),因为我们即将进行
2015-06-26 10:01:29 1206
转载 iOS测试与集成工具总结
Giovanni Lodi是来自澳大利亚的一名iOS开发者,最近他总结了iOS平台上单元测试、验收测试的工具,分析了它们的优缺点,以及支持iOS App的持续集成平台。苹果官方工具XCTest是苹果在iOS 7和Xcode5引入的一个简单而强大的测试框架,它的测试编写起来非常简单,并且遵循xUnit风格。XCTest的优点是与Xcode深度集成,有专门的Test导航栏,但因
2015-06-08 00:04:31 1434
转载 iOS利用Runtime自定义控制器POP手势动画
文章转自:前言苹果在IOS7以后给导航控制器增加了一个Pop的手势,只要手指在屏幕边缘滑动,当前的控制器的视图就会跟随你的手指移动,当用户松手后,系统会判断手指拖动出来的大小来决定是否要执行控制器的Pop操作。nav_pop_origin.gif这个操作的想法非常好,但是系统给我们规定的范围必须是屏幕左侧边缘才可以触发,这样实际使用过程中对于有些
2015-06-05 11:32:30 619
转载 跳出手掌心——如何立即触发UIButton边界事件
跳出手掌心——如何立即触发UIButton边界事件21 May 2015 • 2 min. read • 0 Comments最近在使用UIButton的过程中遇到一个问题,我想要获得手指拖动button并离开button边界时的回调,于是监听UIControlEventTouchDragExit事件,如文档所述:An event where a finger is
2015-05-27 17:51:58 1222
转载 有趣的Autolayout示例-Masonry实现
文章转自:http://tutuge.me/2015/05/23/autolayout-example-with-masonry/?comefrom=http://blogread.cn/news/有趣的Autolayout示例-Masonry实现前言好久没有写Blog了,这段时间有点忙啊=。=本文举了3个比较有“特点”的Autolayout例子,源于微博上好友的提
2015-05-25 13:53:35 10483
转载 网易新闻iOS版使用的开源组件
网易新闻iOS版在开发过程中曾经使用过的第三方开源类库、组件1、AFNetworkingAFNetworking 采用 NSURLConnection + NSOperation, 主要方便与服务端 API 进行数据交换, 操作简单, 功能强大, 现在许多人都用它取代 ASIHTTPRequest2、Apple Reachability网络监测,可以参考下这篇文章iOS网络
2015-05-20 14:04:07 1377
转载 iOS开发者如何提高自己的水平?
(原文:Leveling Up 作者:Mark Dalrymple 译者:xiaoying )不知道你有没有参与或是旁观过iOS开发的黑客马拉松,我觉得这是非常好的事情,在这里人们几乎不睡觉,一起脑洞大开,在Objective-C运行时环境下,利用iOS的相关知识攻城略地,度过激情四射的72个小时。对于我来说,它们让人心潮澎湃,我的所有平台知识都在头脑风暴下接受考验,我的技
2015-05-09 12:37:25 1381
转载 实时显示iOS编写UI代码效果
编写iOS应用UI的方式大概有两种,一种是Storyboard/Xib,另一种是手写代码。采用Storyboard/Xib方式组织UI,由于提供可视化的特性,只要从UI库中拖动UI控件,便可以显示结果,极大地提高开发速度。但面临一个问题就是多人协作开发,由于所有的UI都放在同一个Storyboard文件中,使用Git/SVN合并代码就会出现冲突。多人协作开发还不是主要问题,有人提出可以创建多个St
2015-05-08 18:48:25 2422
转载 iOS 开发实践之 Auto Layout
本文是博主 iOS 开发实践系列中的一篇,主要讲述 iOS 中 Auto Layout(自动布局)在实际项目中的使用。Auto Layout 在 2012 年的 iOS 6 中发布,距今已经 2 年多了,如果从 2011 年在 Mac OS X 上发布的 Auto Layout 开始算起,已经超过 3 年了。如果你的简历上写着 2 年以上工作经验,而竟然不会使用 Auto Layout,真
2015-04-28 11:02:59 1548 1
转载 Method Swizzling 和 AOP 实践
文章转自:http://tech.glowing.com/cn/method-swizzling-aop/上一篇介绍了 Objective-C Messaging。利用 Objective-C 的 Runtime 特性,我们可以给语言做扩展,帮助解决项目开发中的一些设计和技术问题。这一篇,我们来探索一些利用 Objective-C Runtime 的黑色技巧。这些技巧中最具争议的或许就是 Me
2015-04-27 10:26:08 877
转载 AFNetworking2.0源码解析<一>
最近在看 AFNetworking 源码,想自己边看边记录一下学习笔记的,过程中发现隔壁同桌的笔记做的挺不错的,我索性就把草稿给删了,抄了同桌的笔记了,文字和版权全部都属于同桌。 文章转自:http://blog.cnbang.net/tech/2320/comment-page-1/ 最近看AFNetworking2的源码,学习这个知名网络框架的实现,顺便梳理写下文章。A
2015-04-24 15:02:50 1050
转载 Custom backBarButtonItem
我想得到的效果:当用户点击backBarButtonItem的时候,在pop前,我想处理一些逻辑来判断是否pop。并且我想要保留backBarButtonItem的'为什么得不到这种效果为backBarButtonItem绑定事件会被忽略,UINavigatonController自动为其绑定事件,只做POP动作。There is nothing we can do
2015-04-15 11:45:35 1934
转载 数字签名是什么?
数字签名是什么?作者: 阮一峰日期: 2011年8月 9日今天,我读到一篇好文章。它用图片通俗易懂地解释了,"数字签名"(digital signature)和"数字证书"(digital certificate)到底是什么。我对这些问题的理解,一直是模模糊糊的,很多细节搞不清楚。读完这篇文章后,发现思路一下子就理清了
2015-04-15 11:35:35 834
原创 KVC 和 KVO 的一点理解
KVC用 KVC 实现高阶消息传递valueForKey: 有很多有用的特例,比如说 NSArray 和 NSSet 这样的容器类都覆盖了这个方法。valueForKey: 被传递给容器中得每一个对象,而不是对容器本身进行操作。结果会被添加进返回的容器中。这样,开发者能很方便的用一个容器创建另一个容器对象,比如像这样:NSArray *array = @[@"foo",@"
2015-03-29 10:59:07 5112
原创 关于设置 UIPopoverController.popoverContentSize 大小的坑
在 IOS 8 中,这样设置是没有问题的,但是在 IOS 7 中,这样的设置就会出现问题了,无论你怎样设置,popover 出来的内容框大小依然是默认的大小。_popoverController = [[UIPopoverController alloc] initWithContentViewController:_contentViewController]; _popov
2015-03-25 15:04:34 6307
原创 NSDateFormatter 日期格式
紀元的顯示:G:顯示AD,也就是公元 年的顯示:yy:年的後面2位數字yyyy:顯示完整的年 月的顯示:M:顯示成1~12,1位數或2位數MM:顯示成01~12,不足2位數會補0MMM:英文月份的縮寫,例如:
2015-03-24 18:38:27 1771
原创 IOS之方法混写(swizzling.)
OC中的混写(swizzling)是指透明地把一个方法换成另外一个。简明的说就是在运行时替换方法。利用方法混写可以改变那些没有源代码的对象(包括系统对象)的行为。方法混写的代码看起来相对比较直观的,举个例子说明一下,之前做本地化翻译的时候就有用到 swizzling 方法。直接去swizze方法 awakeFromNib 然后替换成自己的方法实现以实现本地化翻译。详细可以看这篇文章:IOS本地
2015-03-17 23:00:53 3146
转载 iOS多线程编程指南(二)线程管理
当应用程序生成一个新的线程的时候,该线程变成应用程序进程空间内的一个实体。每个线程都拥有它自己的执行堆栈,由内核调度独立的运行时间片。一个线程可以和其他线程或其他进程通信,执行I/O操作,甚至执行任何你想要它完成的任务。因为它们处于相同的进程空间,所以一个独立应用程序里面的所有线程共享相同的虚拟内存空间,并且具有和进程相同的访问权限。 一、线程成本多线程会占用你应用程序(和
2015-03-11 21:55:11 743
转载 IOS多线程编程一:概述
什么是多线程多线程是一个比较轻量级的方法来实现单个应用程序内多个代码执行路径。从技术角度来看,一个线程就是一个需要管理执行代码的内核级和应用级数据结构组合。内核级结构协助调度线程事件,并抢占式调度一个线程到可用的内核之上。应用级结构包括用于存储函数调用的调用堆栈和应用程序需要管理和操作线程属性和状态的结构。 多线程的替代方法你自己创建多线程代码的一个问题就是它会给你
2015-03-11 21:38:46 870
转载 UIDevice Category For Processes
// .h @interface UIDevice (ProcessesAdditions)- (NSArray *)runningProcesses;@end // .m#import @implementation UIDevice (ProcessesAdditions) - (NSArray *)runningProcesses { int mib[4] =
2015-02-27 21:13:39 934
转载 How to add a Custom Pull to Refresh in your iOS Application
If you love your iOS Application and like to make sure that branding is consistent throughout then it might be a good idea to customise the Pull to Refresh feature.There is some debate whether or
2015-01-20 10:01:01 1390
转载 我常用的 15 个 Sketch Plugins
我常用的 15 个 Sketch PluginsSketch 是我工作中使用频率最高的应用,有必要列个轻单来记录下 Sketch 里让我提升工作效率的几个常用插件。依据个人使用习惯,以下排名分先后。Content Generator Sketch Plugin快速创建头像、名字、地理位置等 mock up 的必备神器。https://
2015-01-12 09:34:23 19221
原创 解决resignFirstResponder或者endEditing无效的办法
当你想要收回弹出的键盘时却发现平时用的resignFirstResponder和endEditing都失去作用时,应该考虑一下当前的TextField是否为第一响应者,如果不是第一响应者的话,自然下面的几个方法都没有效果,解决办法有二:1、找出当前第一响应者,然后resignFirstResponder。2、先对TextField becomeFirstResponder 然后再 resignFi
2015-01-07 15:26:06 19162
原创 NSDateFormatter 'YYYY' 和 'yyyy' 的区别
今天刷微博的时候看到这个:立马就想到了BK项目今天feedback回来的bug,运行了大半年好好的都没有啥问题,今天突然间黑屏了,debug后才发现,NSDateFormatter 的时候时间变成2015年了,擦,今天还是2014年啊亲!所以导致create preform的时候出现了问题。Google了之后才发现是在格式化的时候由YYYY导致引起的,改回yyyy就好了。具体区别:
2014-12-29 23:52:44 10399 1
原创 CAEmitterLayer实现粒子效果
CAEmitterLayer在iOS 5中,苹果引入了一个新的CALayer子类叫做CAEmitterLayer。CAEmitterLayer是一个高性能的粒子引擎,被用来创建实时例子动画如:烟雾,火,雨等等这些效果。CAEmitterLayer看上去像是许多CAEmitterCell的容器,这些CAEmitierCell定义了一个例子效果。你将会为不同的例子效果定义一个或多个CA
2014-12-26 17:57:33 12035 2
转载 如何在github上fork一个项目来贡献代码以及同步原作者的修改
作为一个IT人,通过github进行学习是最快的成长手段。我们可以浏览别人的优秀代码。但只看不动手还是成长得很慢,因此为别人贡献代码才是明智之举。比如我们看下片看,许多大片都是由字幕组免费翻译压制的。为什么他们要这样做呢?因为他们都是聪明的大学生,为了提高听力水平,提高笔译水平才这样干的!中国人都是非常实务的!因此贡献代码,参与开源项目都是有益无害的!好了,让我们开始吧!如何贡献自己的力量
2014-12-06 00:16:04 1048
原创 根据文字动态调整 UILabel 高度
#import @interface UILabel (dynamicSize)-(float)resizeToFit;-(float)expectedHeight;@end#import "UILabel+dynamicSize.h"@implementation UILabel (dynamicSize)-(float)resizeToFit{ float
2014-12-02 18:33:01 3766
原创 阅读 TCMessageBox toast 源码小记
TCMessageBox toast 是一个很小的 toast 展示,主要效果有以下2种: 看了一下实现方式,也是挺简单的,不外乎就是创建一个view,中间再放一个 activityIndicator 和一个 label,最后再把整个view展示在 mianView 的中间而已。看代码:#import @interface TCMessageBox :
2014-11-26 14:43:56 1111
fdk-aac-0.1.3(包含bitcode)
2016-06-17
CKCalendarView
2014-06-09
优化UITableViewCell滚动性能demo
2014-05-10
TPKeyboardAvoidingScrollView(view自动上滚,避免遮住输入框)
2013-09-23
Object-C内存管理2-对象之间的内存管理
2013-08-26
Windows异步套接字网络编程
2013-04-30
Prolific usb-to-serial comm port 驱动 for win7win8
2013-04-27
Visual C++MFC编程实例
2013-03-06
软件工程项目编写模板与示例
2013-01-06
网络数据库课程设计
2012-12-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人