Swift设计模式(二)命令模式设计模式是在特定场景下解决特定问题的一种方法,代码中不能为了设计模式而设计模式,不然简单问题很容易复杂化。 干货君2016-10-24 09:35 |
Swift设计模式(一)责任链模式设计模式是在特定场景下解决特定问题的一种方法,代码中不能为了设计模式而设计模式,不然简单问题很容易复杂化。 干货君2016-10-18 12:00 |
Swift数组变换高级函数,如果一个函数接受函数参数,或者函数的返回值是函数就称之为高阶函数(higher-order function)。通过使用闭包表达式创建的函数一般叫做闭包(实际上使用func定义的函数也是闭包)。 对于数组,标准库中有1… 干货君2016-10-13 17:18 |
GCD在Swift3中的变化Swift3对C层级的GCD API做了全面改变,完全找不回原来的感觉了,为了适应新的API,这里将原来的用法和现在的用法做个对比。 干货君2016-10-11 17:59 |
GCD线程并发控制Semaphore我们在使用Dispatch Group进行多线程任务组工作时,往往会由于线程过多导致CPU独占,从而导致性能下降,甚至被系统杀掉,所以在使用Dispatch Group时,为了对线程数量进行控制,往往使用Semaphore进行控制。 干货君2016-10-11 16:57 |
Swift On Linux(环境配置、编译、调试)自Swift从2015年12月开源以来,很多做服务端开发的爱好者使用Swift开发了众多的WEB框架,作为一个iOS开发者,了解Swift在其它平台上的应用,能够提高自身对Swift语言理解。 Swift源代码地址:https://github.com/apple/swift 干货君2016-10-09 17:32 |
轻量化Controller--2.抽离Cell.Delegate、UITableView.Delegate在上一篇轻量化UITableView相关的Controller--1.提取DataSource中,我们一起抽离出了DataSource,让很多ViewController中的冗余的DataSource代码得到了复用,解放了ViewController. 干货君2016-08-31 19:25 |
轻量化Controller--1.抽离DataSourceUITableView是一个使用频率非常高的控件,一般项目中都会大量充斥着与UITableView相关的Controller,而这些Controller中又遍地都是与UITableView相关的DataSource与Delegate… 干货君2016-08-23 23:08 |
Node.js中的Promise机制Node.js中的Promise机制 干货君2016-07-21 10:38 |
话说Kingfisher@onevcat,真名王巍,iOS圈儿一般习惯称其喵神(清华高才生哟,嘿嘿~),其扎实的编程基础,强大且优雅的代码能力,优秀的写作风格,更重要的是分享精神注定了他会在圈儿里面留下他常存的足迹(哈哈,听起来怪怪的~),一句话,这哥们很强大。然后呢,在Swift… 干货君2016-07-06 14:29 |
Asynchronous在实际开发过程中,我们经常会遇到这样一种情况:需要多个函数执行结果进行最终的处理,但是这些函数中又包含了异步或者多线程代码块,我们如何才能保证在这些函数中的异步代码块执行结束后再进行最终的处理呢?有没有什么通用又优雅的方式呢?我遇到这种情况后,第一反应就是使用runtime… 干货君2016-07-05 22:05 |
Cocoa-Swift-循环引用我们要探讨循环引用,就先要讲一下iOS的内存管理,iOS的内存管理说白了就是引用计数,谁创建、持有,则相应对此内存块的引用计数就会增加,当不再需要持有时,则需要将引用计数减少,始终保持平衡,一旦失去这种平衡则就会出现内存泄露。即便从iOS4.1以后引入了ARC… 干货君2016-07-05 22:03 |
Cocoa-Swift-Extension在OC中我们使用Category提高的代码的规范,减少了冗余,在swift中虽然不再有Category了,但是有了类似功能的Extension,相比于Category而言,Extension没有名称,而且不能定义存储属性(当然我们可以使用runtime解决,稍后会讲到)。 干货君2016-07-05 21:59 |
Cocoa-Swift-UIViewController布局Tips本文是UIViewController布局的一些注意事项与技巧。 干货君2016-07-05 21:38 |
Cocoa-Swift-UITableView相关二(自定义Cell)UITableView使用率非常高,而其使用中最重要的一点就是自定Cell,我们用最常见的2种方式来试一下: 干货君2016-07-05 21:37 |
Cocoa-Swift-UITableView相关一(基本使用)UITableView是iOS开发中最常见的布局展示容器,是各种复杂布局都会使用的一种容器。 基本流程: 1、声明实现UITableViewDelegate、UITableViewDataSource。 2、使用IB或者代码创建UITableView… 干货君2016-07-05 21:35 |
Cocoa-Swift-UITabbarController相关Tabbar是最常见的一种布局结构,这种结构有一个最大的好处就是可以很方便地容纳非常多的模块,每个Tab就是一个抽屉,每个抽屉都是并列独立的,每个抽屉中又可以像递归一样不断的一层一层的添加子视图。 我们现在就来试一下,掌握其基本使用。 干货君2016-07-05 21:27 |
多线程编程多线程开发是任何平台、任何语言都会涉及到,iOS开发中的多线程编程方式分为posix thread、NSThread、NSOperation、GCD. 干货君2016-07-05 21:24 |
Block闭包自iOS4引入Block过后,为开发者减少不了少工作,特别是懒人。因为很多小的操作可以直接使用block直接完成,而不用去定义很多方法。 干货君2016-07-05 21:21 |
Size Classes(二)[代码模式]上一篇中,我们了解了Size Class… 干货君2016-07-05 21:19 |
Size Classes(一)[基本概念与IB中的使用]iOS6引入的AutoLayout,但是屏幕尺寸不断多样化,AutoLayout在面对多尺寸屏幕时仍然有心无力,所以apple在iOS8引入了一个全新的概念,size classes。 size classes推翻了屏幕尺寸的概念,而是引入Regular、Compact… 干货君 2016-07-05 21:18:22 |
运行时编程Runtime运行时编程属于进阶的开发内容了,说白了就是在运行时才确定对象属性,并在运行时添加,修改等,这对动态更新一些,对APP扩展都有很好的应用。 干货君 2016-07-05 21:16:23 |
KVC & KVOKVC(Key-Value Coding)与KVO(Key-Value observing)是iOS中非常重要的两个动态特性,属于设计模式中的观察者模式的一种,是iOS开发中的半个黑魔法吧。 干货君 2016-07-05 21:12:33 |
Core AnimationCore Animation使用率很高,我们要熟练使用Core Animation,就必须先了解Core Animation的实现原理。 虽然我们不求甚解,但基本的原理还是得了解一下吧。 干货君 2016-07-05 21:11:22 |
iOS中的数据持久化之[NSUserDefault]任何语言、平台的开发都会涉及到数据的存储问题,我们称之为数据的持久化,在iOS中必然也会有这种应用场景,比如数据缓存、自动登录信息、不变的固化信息等等。 干货君 2016-07-05 21:10:01 |
iOS中的数据持久化之[Sqlite]数据库是所有平台都支持的,所以iOS中进行数据存储肯定也可以使用数据库,常用的小形数据库,比如Sqlite,Berkeley DB等,使用最流行的就是关系形数据库Sqlite。 干货君 2016-07-05 21:07:52 |
iOS中的数据持久化之[Core Data]我们可以认为Core Data是对Sqlite等数据库的底层封装,当然不完全是,CoreData的底层存储机制除了可以使用Sqlite外,也可以使用二进制文件与XML文件等,Core Data使用面向对象方式处理底层的数据存储,也就是一般语言中常说的ORM功能。即Object… 干货君 2016-07-05 21:05:20 |
Core GraphicsCore Graphics 是iOS上层UIKit实现的基础,为了更好的了解iOS的绘制体系,学习Core Graphics很有必要。自定义控件也都基于Core Graphics,所以要想在iOS开发中进行更高级的开发,必然要了解Core Graphics。 干货君 2016-07-05 21:01:58 |
iOS富文本[TextKit]上一篇的CoreText中,我们已经从头到尾基本上掌握了CoreText的所有使用场景,Apple的工程师会根据开发者提出的反馈与要求,不断的完善SDK,从上一篇文章中我们可以看出来 ,要实现富文本还是非常的麻烦,不能直接使用上层友好的控件API。那在iOS7中Text Kit… 干货君 2016-07-05 20:59:41 |
iOS富文本[CoreText]iOS SDK 中与Text相关的控件层次结构如上图所示,CoreText是直接基于底层的Core Graphics的,所以渲染效率很高。 在学习CoreText排班前,我们必须先来学习一下其基本原理,不然根本就无法理解API的使用。 干货君 2016-07-05 20:52:06 |
IOS编程中HTTP网络模块本篇我们主要是一起来看一下IOS编程中网络模块中最常见的2种方式,底层的TCP和上层的HTTP,只有先了解最原始的东西,我们才会了解它的不足,才能知道从何入手进行改造。 干货君 2016-07-05 20:33:06 |
AutoLayout深入浅出五[纯代码的偏执]自定义View、根据数据动态调整布局等都是开发中很常见的需求,所以仅仅在IB中添加constraint不能应对所有的场景,也有开发者对autolayout不信任,总感觉没有安全感,亦或协同容易冲突,在iOS开发中能在IB… 干货君 2016-07-03 18:16:13 |
AutoLayout深入浅出五[UITableView动态高度]本系列文章我们讨论的是AutoLayout,那iOS6引入AutoLayout之后,情况是否有所变化呢?当然!而且AutoLayout在iOS不断更新过程中,也在一起不断的优化,以方便开发者进行布局。说实话,跟很多开发者一样,我目前也并不是特别喜欢AutoLayout… 干货君 2016-07-03 18:13:01 |
AutoLayout深入浅出四[不仅是UIWebView与UITableView的纠缠]上一篇中我们已经深度使用了Autolayout,UIScrollView是一个比较复杂的控件了,我用了一个较为复杂也比较觉见的布局示例将Autolayout在Scrollview下的应用讨论了一遍,希望有帮助到你更好的理解Autolayout… 干货君 2016-07-03 18:08:07 |
AutoLayout深入浅出三[相遇Scrollview]AutoLayout 与 UIScrollView的相遇是一个不可避免的场景,像UITableView、UIWebView这些都是继承于UIScrollView的,关于它们的autolayout布局大体一致,但还是会有略微不同,而我们这篇讨论的主要是其contentSize… 干货君 2016-07-03 18:04:28 |
AutoLayout深入浅出二[基本使用]在上一篇中我们一起讨论了Autolayout出生之前的iOS布局方式,并讲了以前的布局方式的缺陷,从而引入了AutoLayout,这篇文章我们就直接上正餐了。 接到上一篇的示例,我们使用Autolayout来完成autoresizingMask无法完成的使命,我们先在File… 干货君 2016-07-03 18:01:21 |
AutoLayout深入浅出一[前传]我想大部分的iOS开发者都面临着iOS设备分辨率碎片化而带来的一系列适配问题,以前的Rect布局方式显得越来越古板,越来越无法高效的完成我们布局的想法,不论是使用xib还是code… 干货君 2016-07-03 17:57:11 |
函数柯里化(Function Currying)什么是柯里化?可能有很多小伙伴都没听过这个概念,我们先来了解一下什么是柯里化。 干货君 2016-07-03 11:35:54 |
数组索引(分组)建立拼音库是第一步,直接使用这个就可以了:Pinyin 由于我们使用Swift,而Pinyin里面是C的函数,这里就偷懒不更改Pinyin了,直接添加一个Object-C中间类ChineseString用于转换。 干货君 2016-07-03 11:33:14 |
Slice(数组的分段操作)Slice,字面意思就是数组的分段操作,就是Range的操作,的Object-C中使用RangeMake,在Swift中使用"..."和".. 先看一下例子: 干货君 2016-07-02 17:08:06 |
iOS闭包中的内存泄漏陷阱闭包是我们的强大的武器,具体的概念与使用请参考文档: 闭包(Closures) 干货君 2016-07-01 15:48:22 |
数组常用操作技巧先看一下常用操作,闭包的使用请参考:闭包: 1.排序,Sort: 干货君 2016-07-01 15:44:38 |
Sequence什么是SequenceType? 我们直接看一下其定义: 干货君 2016-07-01 15:35:56 |
枚举相关值枚举的定义与基本的使用,我这里就不罗嗦了,可以参考官方文档 我这里只讲一下Swift的不同与重点需要注意的地方,Swift中的枚举成员可以自定义类型,可以是Character、Int、String… 干货君 2016-07-01 15:33:21 |
泛型(Generics)先看一下什么是泛型: 泛型代码可以让你写出根据自我需求定义、适用于任何类型的,灵活且可重用的函数和类型。它可以让你避免重复的代码,用一种清晰和抽象的方式来表达代码的意图. 干货君 2016-07-01 15:30:34 |
断言与前置条件断言与前置条件(Assertions & Preconditions)跟其它语言类似,都是用于程序执行的条件判断,当条件判断为false时,则后续代码将不再执行,从而抛出异常,以保证后续代码的执行安全。 二者完全是实现相同功能,只是应用场景有所不同而以,assertions… 干货君 2016-07-01 15:26:58 |
Swift操作符重载学习过C++的朋友都知道,C++有操作符重载,而ObjectC一直以来没有操作符重载,在新语言Swift中这一方便的特性被引入了进来,在学习之前我们先来了解一下操作符与操作符重载的概念。 干货君 2016-07-01 10:41:22 |