源码篇:Mantle

Mantle是一个用于简化Cocoa或Cocoa Touch程序中model层的第三方库。通常我们的应该中都会定义大量的model来表示各种数据结构,而这些model的初始化和编码解码都需要写大量的代码。而Mantle的优点在于能够大大地简化这些代码。Mantle源码中最主要的内容包括:MTLModel类:通常是作为我们的Model的基类,该类提供了一些默认的行为来处理对象的初始化和归档操作,同时...
Mantle

工具篇:Mantle

版本:1.5.3Mantle makes it easy to write a simple model layer for your Cocoa or Cocoa Touch application.由上面这句话可知,Mantle的目的是让我们能简化Cocoa和Cocoa Touch应用的model层。那先来看看通常我们是怎么处理model层的吧。解决的问题在我们写代码时,总要面对不同的数据来源...
Mantle

一种让UITableView的数据从下往上增长的方式

遇到问题一般来说tableview的数据都是从上往下增长,如下图所示(先是aaa出现在表格列表的最顶部,然后bbb出现在aaa的下面,以此类推)但是如果我们想反向这个过程该怎么做呢?如下图所示(先是aaa出现在表格列表的最底部,然后aaa被顶上去,bbb出现在aaa原来的位置)解决问题我们当然第一时间向万能的stackoverflow君求救,找到了这个 解决方案 。原理很简单就是让整个tablev...
IOS开发 UITableView

iOS时间轴的实现

最近项目需求,恰好要做一个时间轴,而iOS这方面时间轴的例子也比较少,我就把自己所做的例子和思路共享出来给大家,共同学习。时间轴的具体实现效果如图1所示:        图1第一步:看到这个图,我们想到的第一反应就是使用tableView或者CollectionView来完成,那么我这里使用的是tableView。首先,创建一个Single View Application项目,在Ma...
iOS时间轴 iOS开发

Objective-C中的Block

1.相关概念在这篇笔记开始之前,我们需要对以下概念有所了解。1.1 操作系统中的栈和堆注:这里所说的堆和栈与数据结构中的堆和栈不是一回事。我们先来看看一个由C/C++/OBJC编译的程序占用内存分布的结构:栈区(stack):由系统自动分配,一般存放函数参数值、局部变量的值等。由编译器自动创建与释放。其操作方式类似于数据结构中的栈,即后进先出、先进后出的原则。例如:在函数中申明一个局部变量int ...
Block Objective-C

为UITableViewController瘦身

在IOS开发中采用了MVC得模式,ViewController通常是最庞大的文件,里面包含了各种各样的大概,造成代码的复用率低下,可读性也降低,那么有什么办法来解决这个问题呢。在创建Table的时候,绑定数据源需要实现三个委托-(NSInteger)tableView:(UITableView*)tableViewnumberOfRowsInSection:(NSInteger)section-(...
IOS开发 UITableViewControlle

IOS开发-Protocol协议及委托代理(Delegate)传值

前言:因为Object-C是不支持多继承的,所以很多时候都是用Protocol(协议)来代替。Protocol(协议)只能定义公用的一套接口,但不能提供具体的实现方法。也就是说,它只告诉你要做什么,但具体怎么做,它不关心。当一个类要使用某一个Protocol(协议)时,都必须要遵守协议。比如有些必要实现的方法,你没有去实现,那么编译器就会报警告,来提醒你没有遵守××协议。注意,我这里说的是警告,而...
Protocol协议 IOS开发 委托代理

iOS 开发中手动 performSegueWithIdentifier 不生效的解决办法

相信很多人都会遇到这样的需求:APP 打开以后,判断用户是否登录,如果未登录,就跳转到登陆页。今天我也遇到了这个需求,发现我封装的一个 `func checkLoginStatus()` 放在 `viewDidLoad` 里调用根本没反映,Google 了一圈,得到了解决办法:overridefuncviewDidAppear(animated:Bool){ super.viewDidAppea...
iOS开发 performSegueWithIdentifier

iOS CLLocationManager定位

在iOS8以前的版本中,我们使用CLLocationManager定位是没有问题的,最近在iOS8系统中却无法定位了。。。。这是一大问题啊!1、首先定义一个全局的变量用来记录CLLocationManager对象,引入CoreLocation.framework使用#importCoreLocation/CoreLocation.h @property(nonatomic,strong)CLLo...
iOS开发 CLLocationManager定位

Swift初始化的安全方式

我们在深入初始化方法之前,不妨先再想想 Swift 中的初始化想要达到一种怎样的目的。其实就是安全。在 Objective-C 中,init 方法是非常不安全的:没有人能保证 init 只被调用一次,也没有人保证在初始化方法调用以后实例的各个变量都完成初始化,甚至如果在初始化里使用属性进行设置的话,还可能会造成各种问题,虽然 Apple 也明确说明了不应该在 init 中使用属性来访问,但是这并不...
Swift初始化 Swift