<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[RannieR的技术博客]]></title><description><![CDATA[love the code,love the world.]]></description><link>https://blog.youkuaiyun.com/ran0809</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ran0809]]></copyright><item><title><![CDATA[博客搬家至Github]]></title><link>https://blog.youkuaiyun.com/ran0809/article/details/41176555</link><guid>https://blog.youkuaiyun.com/ran0809/article/details/41176555</guid><author>ran0809</author><pubDate>Sun, 16 Nov 2014 20:32:11 +0800</pubDate><description><![CDATA[为了使用Mark'do'w'n写作更方便一些]]></description><category></category></item><item><title><![CDATA[iOS小米遥控器的手势监听及UI实现]]></title><link>https://blog.youkuaiyun.com/ran0809/article/details/39505807</link><guid>https://blog.youkuaiyun.com/ran0809/article/details/39505807</guid><author>ran0809</author><pubDate>Tue, 23 Sep 2014 23:07:30 +0800</pubDate><description><![CDATA[这篇文章通过实例实现了一个类似小米手势遥控器的功能页面。
效果图如下所示：










触摸事件的响应通过对系统的触摸实践监听来进行。
通过一个数组来对点的集合进行缓存和分析。


- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    if (!self.allowsIn]]></description><category></category></item><item><title><![CDATA[Swift的可选链，类型转换和扩展]]></title><link>https://blog.youkuaiyun.com/ran0809/article/details/37891243</link><guid>https://blog.youkuaiyun.com/ran0809/article/details/37891243</guid><author>ran0809</author><pubDate>Tue, 22 Jul 2014 23:28:01 +0800</pubDate><description><![CDATA[可选链(Optional Chaining)


可选链是一种请求或调用属性，方法，子脚本的过程。
可选性体现于请求或调用的目标当前可能为nil.若不为nil则成功调用，否则返回nil并将链失效。]]></description><category></category></item><item><title><![CDATA[Swift的构造和析构过程]]></title><link>https://blog.youkuaiyun.com/ran0809/article/details/37669983</link><guid>https://blog.youkuaiyun.com/ran0809/article/details/37669983</guid><author>ran0809</author><pubDate>Fri, 11 Jul 2014 22:16:00 +0800</pubDate><description><![CDATA[构造过程


Swift的构造过程通过定义构造器来实现。
不过与Objective-C不同的是，Swift的构造器不需要返回值，同样也不需要表明Func。


另外值得提的是，当构造器中为存储型属性赋值时，不会触发属性观测器。


定制化的构造过程


1. 除了默认的构造器外，我们可以通过增加参数的方式来为其添加自定义的构造函数或者叫便捷构造器（covenience i]]></description><category></category></item><item><title><![CDATA[使用Swift和SpriteKit写一个忍者游戏]]></title><link>https://blog.youkuaiyun.com/ran0809/article/details/37371081</link><guid>https://blog.youkuaiyun.com/ran0809/article/details/37371081</guid><author>ran0809</author><pubDate>Sun, 06 Jul 2014 22:05:14 +0800</pubDate><description><![CDATA[这篇文章的游戏使用SpriteKit和Swift语言来完成。
SpriteKit是苹果自己的游戏引擎，更能贴合iOS系统底层的API,不过架构和实现上都是模仿了Cocos2D。所以使用上其实差别不大，不过SpriteKit更轻量级一些。


程序入口


main函数跟OC一样，将入口指向了appdelegate,而cocoa touch框架几乎跟OC一样，只不过用Swift重写了一]]></description><category></category></item><item><title><![CDATA[Swift的属性，方法，下标脚本以及继承]]></title><link>https://blog.youkuaiyun.com/ran0809/article/details/36478891</link><guid>https://blog.youkuaiyun.com/ran0809/article/details/36478891</guid><author>ran0809</author><pubDate>Thu, 03 Jul 2014 21:10:13 +0800</pubDate><description><![CDATA[从这篇章节起，Swift编程语言指南大部分的重要内容在于概念，代码并不是太多。理解Swift的面向对象理念，语法以及类结构，构造析构过程对于很好的应用Swift语言将会有比较大的帮助。


属性
存储属性
存储属性通常是那些可以通过直接赋值，或者直接访问成员能够获得的属性类型。
它有些要注意的地方：
若一个结构体被声明为常量，则子属性无法被修改了。在Objective-C中，我们总是]]></description><category></category></item><item><title><![CDATA[Swift的闭包，枚举，类和结构体]]></title><link>https://blog.youkuaiyun.com/ran0809/article/details/33785571</link><guid>https://blog.youkuaiyun.com/ran0809/article/details/33785571</guid><author>ran0809</author><pubDate>Wed, 25 Jun 2014 23:36:34 +0800</pubDate><description><![CDATA[闭包(Closures)


使用过其他语言的应该对代码块并不陌生，Swift中的闭包与C,OC中的Block相似。
表示自包含的函数代码块，可以在代码中传递和使用。
并且可以捕获和存储上下文的变量以及常量值，Swift会为你进行捕获相关的内存操作。




上一篇文章提到的函数，也是一种特殊的闭包，具体在：
全局函数是有名字但是不会捕获任何值的闭包。
嵌套函数是有名字且可]]></description><category></category></item><item><title><![CDATA[Swift的流程控制和函数]]></title><link>https://blog.youkuaiyun.com/ran0809/article/details/33392513</link><guid>https://blog.youkuaiyun.com/ran0809/article/details/33392513</guid><author>ran0809</author><pubDate>Sun, 22 Jun 2014 22:43:39 +0800</pubDate><description><![CDATA[流程控制（Control Flow）


For循环
for循环和C语言，OC用法很相像，通常有for（）和 for in两种。
遍历时可以利用下划线"_"忽略对值的访问等。








Switch
switch在Swift中则显得灵活的多，不过需要注意的是，不同于C语言，Swift中的Switch不存在隐式的贯穿，每个case里的表达式后面不需要写break则]]></description><category></category></item><item><title><![CDATA[Swift的基础，操作符，字符串和集合类型]]></title><link>https://blog.youkuaiyun.com/ran0809/article/details/28590209</link><guid>https://blog.youkuaiyun.com/ran0809/article/details/28590209</guid><author>ran0809</author><pubDate>Thu, 05 Jun 2014 10:49:52 +0800</pubDate><description><![CDATA[这篇文章主要讲解苹果Swift官方指南的第二章前四节的要点内容，如果想看完整的英文文档可以去苹果开发者页面下载。


Basic


声明常量let
声明变量var
注释依旧使用"//" "/**/", 注意这里"/**/"在Swift可以嵌套使用
表达式结尾不再有分号


整数
你可以声明为Int或者UInt，他们本身适应不同平台(64位, 32位),类似于NSInte]]></description><category></category></item><item><title><![CDATA[现代的新语言--Swift初探]]></title><link>https://blog.youkuaiyun.com/ran0809/article/details/28295971</link><guid>https://blog.youkuaiyun.com/ran0809/article/details/28295971</guid><author>ran0809</author><pubDate>Tue, 03 Jun 2014 23:54:46 +0800</pubDate><description><![CDATA[新的语言


WWDC简短的介绍，新的语言Swift就问世了，虽然新语言的名字导致贴吧下歌手粉丝和开发者们争抢地盘- -，不过雨燕就是这么来了。


WWDC keynote里给Swift打上了很多标签:
Closures,Generics,Namespaces,Type inference,Multiple return types


闭包，泛型支持，支持命名空间，去除隐式]]></description><category></category></item><item><title><![CDATA[不错的iOS相关的主页或网站 (更新于14-06-22)]]></title><link>https://blog.youkuaiyun.com/ran0809/article/details/26514273</link><guid>https://blog.youkuaiyun.com/ran0809/article/details/26514273</guid><author>ran0809</author><pubDate>Wed, 21 May 2014 22:54:39 +0800</pubDate><description><![CDATA[最近一直没事在翻一些网站看看资料学习下。推荐几个不错的网站：
http://www.raywenderlich.com/   这个网站有各种各样的教程，可惜是大部分都是英文教程，不过阅读起来还好。每到iOS有新版本发布时也会出专题的教程书籍。

http://objccn.io/   这个是一个项目组专门翻译objcio英文文章而建的主页。翻译的内容都很棒。

http://nships]]></description><category></category></item><item><title><![CDATA[UIImage常用的分类]]></title><link>https://blog.youkuaiyun.com/ran0809/article/details/18566043</link><guid>https://blog.youkuaiyun.com/ran0809/article/details/18566043</guid><author>ran0809</author><pubDate>Mon, 20 Jan 2014 22:15:16 +0800</pubDate><description><![CDATA[有些时候经常需要对系统本有的类方法进行扩充，于是可能需要对类采用继承或者分类的方式来实现需要。
最近写的一个项目用到了一些对图片进行处理的一些扩充方法。


涉及到的方法:




比较常用的类似于拉伸图片，拼接图片名称或者以颜色生成图片等。


拼接图片名称：
+ (UIImage *)imageMatchSizeWithName:(NSString *)imageNa]]></description><category></category></item><item><title><![CDATA[【iOS】用Layer创建一个三维模型以及拖动]]></title><link>https://blog.youkuaiyun.com/ran0809/article/details/17340463</link><guid>https://blog.youkuaiyun.com/ran0809/article/details/17340463</guid><author>ran0809</author><pubDate>Mon, 16 Dec 2013 00:11:38 +0800</pubDate><description><![CDATA[关于CALayer的介绍以及基本属性，在这篇博客中有交代：CoreAnimation —— CALayer


这篇博客讲述简单的通过对layer的transform属性的设置一个CATransform3D来进行自定义三维图形，甚至后续的处理。
通常简单的仿射变换我们也是通过对其的transform属性进行设置。不过这里设置的是一个3D变换类。如果线性代数很好的话，那应该能够理解内部具体做]]></description><category></category></item><item><title><![CDATA[CoreImage的使用及常见滤镜工具(一)]]></title><link>https://blog.youkuaiyun.com/ran0809/article/details/16872145</link><guid>https://blog.youkuaiyun.com/ran0809/article/details/16872145</guid><author>ran0809</author><pubDate>Thu, 05 Dec 2013 00:28:00 +0800</pubDate><description><![CDATA[概述:
CoreImage是一个图像框架，它基于OpenGL顶层创建，底层则用着色器来处理图像，这意味着它利用了GPU基于硬件加速来处理图像。CoreImage中有很多滤镜，它们能够一次给予一张图像或者视频帧多种视觉效果。而且滤镜可以连接起来组成一个滤镜链，把滤镜效果叠加起来处理图像。
CoreImage框架最早出现于iOS5，iOS6也对这个框架进行了扩展，这篇博客的Demo是基于iOS7的]]></description><category></category></item><item><title><![CDATA[动态语言，别再说不]]></title><link>https://blog.youkuaiyun.com/ran0809/article/details/17058635</link><guid>https://blog.youkuaiyun.com/ran0809/article/details/17058635</guid><author>ran0809</author><pubDate>Sun, 01 Dec 2013 19:25:32 +0800</pubDate><description><![CDATA[看到篇好文章，转下。永远都要从基于语言优势设计产品的思路考虑问题，而不仅仅拘泥于语言的某个缺点不放。


相信很多人都听过一个禅宗故事，说是两个僧人赶路，趟过一条小河的时候，看到一个漂亮的少妇困于其中，向他们呼救。其中一个有心施以援手，但想到佛家的色戒，便犹豫起来，不知如何是好。可另一个和尚却大大咧咧地冲过去，抱起少妇，趟过小河。于是前者的心里就很不舒服，一路上闷闷不语，后来实在忍不住，就问]]></description><category></category></item><item><title><![CDATA[IOS中常见的Operation —— NSOperation]]></title><link>https://blog.youkuaiyun.com/ran0809/article/details/14216649</link><guid>https://blog.youkuaiyun.com/ran0809/article/details/14216649</guid><author>ran0809</author><pubDate>Wed, 06 Nov 2013 22:35:54 +0800</pubDate><description><![CDATA[NSOperation


在应用需要进行异步处理时，我们需要选择一下异步处理的方式，GCD通常是一个不错得选择，但是也许需要更加面向对象的方式，那么就会使用NSOperation队列，队列中需要执行的操作代码放在NSOperation的子类中。子类将操作的数据和待执行的代码封装起来加入到队列中。


NSOperation类是一个抽象类。其两个子类为:NSInvocationOper]]></description><category></category></item><item><title><![CDATA[常见的排序算法]]></title><link>https://blog.youkuaiyun.com/ran0809/article/details/12924591</link><guid>https://blog.youkuaiyun.com/ran0809/article/details/12924591</guid><author>ran0809</author><pubDate>Mon, 21 Oct 2013 23:58:32 +0800</pubDate><description><![CDATA[最近由于手上有两个项目要写，没有时间构思和写博客= =。


最近属于校招季，计算机原理，算法和数据结构，c语言基础属于最重要的。这里把常考到的常用排序算法简单汇总了下。
包括冒泡排序，简单选择排序，直接插入排序，希尔排序，堆排序和快速排序。



//常用排序汇总

#include 

void swap(int *a, int *b);
void bubble_sort(in]]></description><category></category></item><item><title><![CDATA[为什么寄存器比内存快？]]></title><link>https://blog.youkuaiyun.com/ran0809/article/details/12755369</link><guid>https://blog.youkuaiyun.com/ran0809/article/details/12755369</guid><author>ran0809</author><pubDate>Tue, 15 Oct 2013 20:54:21 +0800</pubDate><description><![CDATA[原文出处： Mike Ash 译文出处： 阮一峰


计算机的存储层次（memory hierarchy）之中，寄存器（register）最快，内存其次，最慢的是硬盘。






同样都是晶体管存储设备，为什么寄存器比内存快呢？







Mike Ash写了一篇很好的解释，非常通俗地回答了这个问题，有助于加深对硬件的理解。下面就是我的简单翻译。

原]]></description><category></category></item><item><title><![CDATA[百度2014移动研发笔试题目——1013清华版]]></title><link>https://blog.youkuaiyun.com/ran0809/article/details/12691025</link><guid>https://blog.youkuaiyun.com/ran0809/article/details/12691025</guid><author>ran0809</author><pubDate>Mon, 14 Oct 2013 00:32:53 +0800</pubDate><description><![CDATA[一.简答题


1.简述计算机的存储系统分为哪几个层次，为什么这样的分层能够提高程序的执行效率。
2.浮点数在计算中如何表示，如何对浮点数判等。
3.简述TCP与UDP协议的差别，两者与HTTP的关系。并列举HTTP的方法，以及常见的返回状态码。


二.算法与程序设计


1.设计一个反转字符串的函数 char *reverse_str(char *str),不使用系统函数]]></description><category></category></item><item><title><![CDATA[IOS仿网易新闻客户端左右侧栏]]></title><link>https://blog.youkuaiyun.com/ran0809/article/details/12589439</link><guid>https://blog.youkuaiyun.com/ran0809/article/details/12589439</guid><author>ran0809</author><pubDate>Fri, 11 Oct 2013 00:12:43 +0800</pubDate><description><![CDATA[左右侧栏已经是当前APP最流行的布局，很多客户端软件都使用了左右侧栏，例如网易新闻，人人网，Weico等等。
这篇博客以当前网易新闻客户端的模式为例仿写了一个左右侧栏架构实现。


先看一下Demo的实现效果
   



实现主要思路以及细节：
视图控制器有三个视图按不同层次排列，最上层的是主要显示视图_mainContentView,下面的为左右侧栏视图；
点击左侧栏不同]]></description><category></category></item></channel></rss>