RAC资源帖

最近在断断续续的学习RAC,差不多两个月的时间,学了120个小时左右。不得不说RAC的学习曲线十分陡峭,造成RAC难学的主要有几点原因: 完全不同的编程思想。平常我们使用OC写代码都是面向对象的编程范式,而RAC却是在OC语言环境下实现的函数式响应编程,简称FRP。这就需要我们使用全新的思维去组织代码架构。 ...

Block使用场景

引言 最近在研究RAC的时候,发现绝大部分代码实现如下所示: RACSignal *completedMessageSource = [self.subscribeCommand.executionSignals flattenMap:^RACStream ...

Runtime系列4--Message Forwarding

消息转发原理 简单来说,就是在Objective-C中,使用对象进行方法调用是一个消息发送的过程(Objective-C采用“动态绑定机制”,所以所要调用的方法直到运行期才能确定)。 方法在调用时,系统会查看这个对象能否接收这个消息(查看这个类有没有这个方法, ...

Runtime系列3--Associated Objects

Associated Objects的作用 Associated Objects的作用一般有如下三种: 为系统类添加私有变量以帮助实现细节; 为系统类添加公有属性; 为 KVO 创建一个关联的观察者。 我们用的最多的是第二种情况。 ...

深浅拷贝

道歉 之前我的一篇关于深浅拷贝的文章,里面有诸多错误,主要是混淆了混淆copy、mutableCopy和深浅拷贝,给大家带来了误导,这里我深表歉意。 经过大家的指正和参考前辈的文章:http://www. ...

iOS实现断点续传

网络下载是我们在项目中经常要用到的功能,如果是小文件的下载,比如图片和文字之类的,我们可以直接请求源地址,然后一次下载完毕。但是如果是下载较大的音频和视频文件,不可能一次下载完毕,用户可能下载一段时间,关闭程序,回家接着下载。 ...

UIWebView保存图片

现在H5混合原生开发的方式越来越流行,也就要用到UIWenview控件。在开发过程中,我们可能会遇到一个需求,要求我们保存网页上的图片,当用户点击图片的时候,就可以让用户选择是否下载图片。 在系统自带的Safari浏览器已经实现了该功能,但是iOS开发中我们如果调用UIWebView加载图片,会发现无法使用Safari保存图片的功能的。 ...

深入理解RunLoop

RunLoop是iOS开发中非常底层的一个概念,我们来看看runloop的实现原理,然后结合实例讲解下runloop的应用场景,来帮助大家更深刻的理解runloop。 runloop概念 什么是runloop呢?从字面意思来看就是运行循环,就是一个线程不断地持续运行,来接受事件处理。 我们知道, ...

frame和bounds的区别

在iOS中我们会经常遇到frame和bounds,这两个概念很相似,但是也有区别。frame还好理解,但是bounds就比较容易迷惑人。我们通过实例来讲解下bounds的概念,然后再看看bounds有哪些用途,这样就可以彻底搞清楚bounds了。 frame和bounds简介 先看一张图: ...

无限轮播图片

现在基本上每个应用的头部,都会是一个无限滚动显示图片的scrollview,然后点击图片可以跳转到不同的页面。今天我们来学习下如何封装一个这样的控件。 需求 三个imageview控件实现多张image的无限滚动 点击图片,可以拿到图片的信息给调用者使用 无限滚动效果图 点击图片事件 ...

获取iOS设备唯一标示UUID

在开发过程中,我们经常会被要求获取每个设备的唯一标示,以便后台做相应的处理。我们来看看有哪些方法来获取设备的唯一标示,然后再分析下这些方法的利弊。 具体可以分为如下几种: UDID IDFA IDFV MAC ...

Block实现iOS回调

回调函数是我们在编程中经常使用到的,但是很多新手只知道怎么用,不知其所以然。今天我们就来剖析下回调函数到底是个什么鬼。 先来看一个关于回调函数的形象的比喻 你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话, ...

iOS应用内支付(IAP)详解

在iOS开发中如果涉及到虚拟物品的购买,就需要使用IAP服务,我们今天来看看如何实现。 在实现代码之前我们先做一些准备工作,一步步来看。 1、IAP流程 IAP流程分为两种,一种是直接使用Apple的服务器进行购买和验证,另一种就是自己假设服务器进行验证。 ...

iOS实现微信授权登录

微信是一个在开发中经常会使用到的平台,比如微信登录、授权、支付、分享。今天我们来看看如何在自己的应用里面集成微信授权。 1、微信授权的定义 微信OAuth2.0授权登录让微信用户使用微信身份安全登录第三方应用或网站, ...

UITextField限制最大输入字符数

在开发中我们经常遇到这样的需求:在UITextField或者UITextView中限制用户可以输入的最大字符数。如果是纯英文的输入,很好解决。但是遇到中文输入法,就会遇到各种坑,而且iOS系统自带的中文输入法和第三方输入法(搜狗,百度)也要区别对待, ...

手动实现TableView的上拉下拉加载

项目开发过程中经常会用到tableview来加载网络数据,而经常要用到的一个功能就是下拉刷新,上拉加载更多。虽然有很多第三方框架可以使用,但是有时我们还是想自己手动定制来达到目的。 下面我们来具体看看如何实现 下拉刷新 这个功能我们可以使用系统自带的refreshControl,但是这个控件只能用在tableViewController里面。 具体实现看代码: ...

iOS踩坑系列-2

争取做到每周一记,把平时遇到的问题都汇总整理。我觉得用博客写笔记,比自己在本地写笔记的优点就是:博客是要给别人看的,所以会不由自主的认真许多。 废话不多说,我们来看看今天会涉及到的几个问题 下拉放大tableview的header 改变statusBar的背景色 ...

iOS 中#define和const的使用细节

在编码过程中,我们需要使用定义一些局部或者全局访问的数据类型。比如下面的两种方式都可以定义了一个动画播放时长的常量: #define ANIMATION_DURATION 3 static const NSTimeInterval ...