自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

慢跑蜗牛的专栏

学海无涯,须要逆流前行

  • 博客(21)
  • 收藏
  • 关注

原创 图片缓存实现

在网络编程当中,如果我们能将向网络请求的图片缓存在本地当中,这将大大的提高我们重复加载图片的速度,使得用户体验更加的好。图片缓存的原理是以网络链接为原型,然后进行格式化的转换,形成一个新的名称,以这个名称作为图片缓存在本地的文件名(一般使用哈希算法,并且算法要保证几乎不会重复命名)。第二种方式是以字典保存链接,每一个链接对应字典的一个key,图片本身的名字作为value存在,那么在每一次请求图片数

2015-05-03 09:26:41 757

原创 自定义tabbar

tabbar本身的barbuttonitem(bbi)在我看来有很多不需要用到的属性变量,而且在开发中有时候会需要用到自定义的bbi,

2015-04-28 19:13:33 384

原创 使用OAuth2.0授权访问新浪微博数据

在开发社交类app时,我们常常需要和新浪微博打交道,获取微博信息。前几天试图获取

2015-04-16 09:16:45 957

原创 仿照网易新闻旧版本左拉的列表动画效果

最近网易新闻客户端更新之后个人感觉不如从前,以前点击左上角的汉堡包菜单按钮的时候,整个屏幕会右移然后出现列表菜单,还有列表的动画效果。在网易新闻放弃这些动画效果之后,让我想要自己制作这么一种动画效果。下面是

2015-04-10 19:39:50 1083

原创 tableview实现qq好友列表点击拉伸的效果

uitableview大概是objective-c开发中最重要的控件了,几乎市面上能够下载的应用中都有使用到它。qq的好友列表也是通过tableview实现的,具体实现大概是在将每一个sectionHeaderView设置为列表名称,然后点击之后加载数据源拉伸,今天就仿照qq的好友列表做一个出来,效果图如下

2015-04-05 09:19:33 584

原创 mac环境下paros抓包工具的配置和使用

paros是一款支持http和https请求的小型抓包工具,可以满足我们日常开发所需。笔者在一开始接触iOS开发网络编程自学时曾经用过,但由于不够聪明,网上也难以找到令我满意的使用教程,耗费了很多大量的时间。回想起来,决定写一篇paros从配置到使用的教程文章。首先是paros的配置问题,使用paros之前必须安装好JDK,正常情况下百度的JDK 8已经可以满足OS X Yosemite以上的

2015-03-31 19:10:35 1814 2

原创 说说block编程和代理-委托模式

代理-委托模式是Objective-C中一种非常高效的设计模式,这种模式使得我们可以创建一个高复用性的功能型类(用于实现某个单一功能,例如网络数据请求),然后通过协议方法回调返回数据给代理人。这种模式使用了聚合替代了多继承来实现OC类多态的实现。任何类对象都可以遵循多个协议,只要实现相应的协议方法就可以了。block是一种看起来更像C语言而非OC语言的编程方式,它允许我们使用类似C语言的函数指

2015-03-27 11:20:03 594

原创 Objective-C强大的类方法

在OC的类中,以+开头的方法全部都是类方法。什么意思呢?就是类方法只能由类对象进行调用,在类方法中同样可以调用其他类方法,甚至调用实例方法;而实例方法却不能调用类方法。我们通常看见的类方法都是创建一个类实例对象的,在MRC的状态下,实例方法跟类方法的创建方式存在着内存管理的差别,但是在目前普遍ARC的状态下,实例方法跟类方法创建的对象已经可以说没有任何差别了。那么,此时类方法的存在意义在哪里呢?

2015-03-26 23:10:06 424

原创 手动实现NSNotificationCenter功能

这几天学习的时候看到了某位程序员自制的手动实现带有block回调函数参数的KVO模式,虽然也跟着做了出来,但是缺陷还有很明显的,无法监听非对象。这个暂且不谈,KVO的实现让我有了实现通知机制的想法,NSNotification想来也就是将接收通知的对象加入某个列表中(我用NSArray存储),然后每个通知对象对应一个回调函数列表,每一次接收新通知时遍历查找,代码放上来:LXD_Notifica

2015-03-18 22:47:49 953

转载 如何自动动手实现KVO

本篇会探究 KVO (Key-Value Observing) 实现机制,并去实践一番 - 利用 Runtime 自己动手去实现 KVO 。KVO (Key-Value Observing)KVO 是 Objective-C 对观察者模式(Observer Pattern)的实现。也是 Cocoa Binding 的基础。当被观察对象的某个属性发生更改时,观察者对象会获得通知。

2015-03-15 09:46:29 422

原创 自定义MyArray实现NSArray部分功能

这段时间电脑进水,索性换掉,直到今天才入手了一台macbook,终于重新开始自己的码文。想了很久这篇文章应该写什么,因为目前博文写的是我回顾自己所学内容,想起曾经做的翻版NSArray,想跟大家分享,另外要是封装的不够好,劳烦指明,这会对我有很大的帮助MyArray.hMyArray.m自定义的枚举类MyEnumeration.hMyEnumerat

2015-03-08 20:35:42 320

原创 修正我关于NSDictionary字典存储的那一篇文章

在上一篇文章中我试图去探究NSDictionary的存储方式,以为找到了新大陆。结果,今天再次测试时发现结果大相径庭,对此被我误导的人表示一声道歉。昨天我得出的结论是NSDictionary中的键值对是顺序存储,NSMutableDictionary初始化的也是,后来加入的是离散存储。但是在我今天把键值对变量打散之后,发现每次遍历的地址输出顺序不一样,但总是那么些值。想起之前了解到的Obj

2015-03-02 22:25:45 1039

原创 探讨OC中字典的存储方式

为什么要写这个文档?我在重温OC的字典类型时,发现了setValue:把值设为nil之后字典中会自动删除这个关键字指向的键值对。于是,我突然有了一个想法,在字典中可以存在多个相同的变量值,但是关键字确具有唯一性,那么NSDictionary的存储中,是否key本质上是一个结构体,存储了一个key的名称和一个指向value的指针。NSDictionary存储的本质上是存储这些结构体,而不存储va

2015-03-01 23:04:19 3500

原创 OC学习之@property和点语法

OC中类的成员变量默认是@protect,外界无法访问类的成员变量,所以通常我们在类文件中声明变量时会同时声明setter跟getter两个方法方便我们获取变量和修改(下面所有代码均在ARC模式下实现)Person.h文件#import @interface Person : NSObject{ int _age; NSString * _name;}- (vo

2015-03-01 11:43:44 2792

原创 UIBeziberPath创建颜色渐变图案

Objective-C的Core Graphics框架中提供了绘制路径的UIBezierPath类,它可以帮助我们创建基于矢量的路径。通过Core Graphics实现的绘图功能要比加载图片的效率高,而且还可以使用CATransaction来实现动画效果。今天我们就来教怎么做一个颜色渐变的爱心。效果图先放上来:做法是创建一个UIBezierPath实例,然后在view上面绘制出爱心的路径来

2015-02-26 22:40:03 897

原创 OC的全能构造器

全能构造器(Designated Initializer)正常情况下是全面初始化类变量的init函数,从类的初始化函数调用中我们就可以看到。例如存在Person类继承自NSObject,包含两个属性:NSString类型的名称name,CGFloat类型的金钱money以及int类型的年龄age。那么我们总共有四个init函数,分别是:①init    ②initWithAge    ③ini

2015-02-25 22:41:29 504

原创 编译器的尾调用优化

我认为学习最有意思的是:在学习到一定程度的时候,你回头看自己曾经学过的内容,能有更深、或者不一样的了解。这几天偶然看到博客园老赵的博客,提到了叫做尾调用优化的技术。在百度之后,兴奋的发现这种技术是用于提升递归时性能的。而作为一个递归算法的忠实拥护者,迫不及待的想分享关于这项技术。        尾调用优化需要我们修改相应的函数结尾来执行,本质上是在函数末尾调用某个不含返回值函数时,编译器会自动

2015-02-23 07:07:43 645

原创 Objective-C的对象等同性

OC开发中我们常常需要比较两个对象是否相等,但是依靠==操作符进行比较的结果未必使我们想要的。因为实例对象本质上是指针,使用==符号实际上是比较两个指针指向内容本身是否相等,而不是比较指向对象。没有操作符重载的OC在基类NSObject协议中声明了方法isEqual和hash来比较对象,通过代码来演示isEqual的作用:                上面三个方法可以比较出==跟isEq

2015-02-21 11:28:57 516

原创 Ojbective-C为什么不用@public

Objective-C中有一个重要的特性——属性,属性用于封装类对象的数据。对于类对象的数据,iOS开发者通常使用“存取方法”来访问。其中,我们通过获取器读取变量值,通过设置器写入变量值。在Objective-C 2.0之后,属性就成为了OC特性的一部分        在对属性进一步的介绍之前,我们先使用常规面向对象语言的方式来创建一个Person类,包括了firstName和lastNa

2015-02-18 15:06:58 462

原创 地精排序和桶式排序——为什么我们要学算法

自学计算机也算有两年多了,自知比不得许多人的学习进度,尤是惭愧。但两年来计算机各种方面的书也是有所涉猎,虽学习的不深,但还是想跟大家分享自己的所学所得。在刚学计算机时,曾经天真的认为只要学好了代码就能成为一代大神,但学到深处才发现,代码语言只是一种工具,并没有很高的技术含量,猿们的差别往往在于编程思想上的差距。编程思想这个概念是很玄乎的,但其实真正表达出来是以算法为载体,算法能够很好的体现了我们解

2015-02-18 09:00:29 647

原创 简洁的字面量语法

因为之前登陆错误账号的原因,原有账号已被弃用,所以文章要转到这里来。我们使用Xcode开发程序时,总会用到几个Foundation框架的类:NSString、NSNumber、NSArray、NSDictionary。由于OC是C语言的超集,所以上诉的这几个类也完全能用C语言实现相同的功能,但是实际应用中这几个类也总是我们代码中的常客。另一方面,OC以语法繁杂而著称,例如我们使用NSS

2015-02-18 08:59:31 565

空空如也

空空如也

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

TA关注的人

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