^_^嗨一下

背景

目前而言,CocoaPods因该是我们项目第三方依赖库管理的不二选择了。什么?你还没用过CocoaPods!信不信打哭你!认真脸,可以这么说,我们项目所需要用到的主流第三方库在CocoaPods上都能找到,同时我们也可以用它来方便的管理和更新我们项目引入的第三方库。这些功能是不是已经很棒了,对于单人开发来说,其实已经够了。毕竟万事都有个然后嘛,是不。团队开发的时候,你就会发现对于项目开发而言如果没有一个很好的管理方法,开发者的项目代码就显得冗余了些,其实很多的时候,我们都是专注于自己的那块业务开发,对于团队的其它代码并不关心,加之近年组件化编程的思想也越来越流行。podspec貌似是一个不错的选择方案。艾艾~不好意思废话说得有点多。

podspec 是什么?

这样说吧,其实它就是一个Git仓库,专门存放你组件代码的地方,和你平时把代码提交到自己的git或者svn没什么两样,只不过它的remote端在GitHub、CODING、Bitbucket…上而已

创建 Spec Repo

第一步 我们需要创建一个 Git仓库
前几天去CODING上注册了个账户,所以就用CODING来玩玩。当然GitHub、CODING、Bitbucket上步骤都是相似的所以大家不要惊慌。

1
2
# pod repo add [Private Repo Name] [CODING HTTPS clone URL]
$ pod repo add LBSpceRepoTest git@git.coding.net:Ran_/LBSpceRepoTest.git

Read More

鸣谢

这里特别鸣谢黄灿师兄,感谢他为我们整理《Ios 7.1 以上系统企业级发布解决方案》文章,现在,我把它放到博客上面,希望对IOS开发的仁兄有帮助。

背景

此前 iOS7.1 正式发布。此次发布带来了一个巨大变化,对于所有 iOS 企业开发人员来
说是个巨大的噩耗,因为原来的 HTTP 应用发布方式不再有效。
这个变化没有得到苹果官方的说明。尽管这样的事情并不是第一次发生,但是我们在 iOS7.1
上测试的结果表明,苹果再次对开发者们下“黑手”了。
通过 Xcode Organizer 查看 7.1 设备上的控制台,我们得到了如下信息:
Could not load non-https manifest URL: http://www.somedomain.com/manifest.plist
苹果已经在 7.1 中禁止了“非 HTTPS”方式的 manifest URL。 你得将上面的 URL 改成
https://www.somedomain.com/manifest.plist 才行。

Read More

简介

KVC(Key–Value Coding,键值编码)KVC提供了一种在运行时而非编译时动态访问对象属性与成员变量的方式,也就是说,我们可以用字符串的内容作为属性名称或者成员变量名称进行访问。这种特性有些类似于其他高级编程语言中的反射(比如java)。简单的说它是一种可以直接通过字符串的名字(key)来访问类属性的机制。而不是通过调用Setter、Getter方法访问。

KVO(Key-Value Observing,键值观察)KVO提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。

今天看了下KVC与KVO的相关东西,突然有了一种醍醐灌顶的感觉,以前没用过,但是今天才发现,这是个好东西啊,以前要是我们的界面上面有关于UI的变动,我们必须要对界面进行刷新后才能看到效果,然而每次的刷新必定会带来很大的内存开销,特别是我们使用UIViewTable的时候,要是数据变更多了,那么我们就需要重新处理变更所带来的界面变化,那么我们又会重新去加载cell,要是cell达到了几百的数量级,那么我么的内存实际上是需要很大的开销的,有了KVC、KVO这个问题就迎刃而解了,我们可以在可能需要变化的属性上面注册KVO,当我们的界面发生改变的时候,直接可以改变属性值,而不需要我们再次使用刷新的方式来更新界面了。

在说使用KVO的时候,我想先说说KVC,因为我们要想使我们的KVO得到有效的使用,我们的对象必须是建立在支持KVC的基础之上的,先不扯淡了,我们直接进入正题吧。

Read More

简介

iOS有三种多线程编程的技术分别是NSThread 、Cocoa NSOperation、GCD,抽象度层次是从低到高的,抽象度越高的使用越简单,也是Apple最推荐使用的。在前面呢我对GCD和NSThread的基本使用做过一些简单的总结,大家有空可以看看。

NSOperation和NSOperationQueue其实也是IOS多线程推荐使用的方法之一,很多网络框架底层的实现原理也都是通过这种方式实现的。但是自己使用的话我还是推荐使用GCD或者NSThread之一,不过也不一定,开发者也可根据自己的使用习惯自己选择用什么方式来实现。因为其实三种方式都是比较简单的,但是就我个人而言,GCD、NSThread是我比较喜欢使用的。在这里我先对NSOperation的使用方式做一些简单的总结,以后用到了再来完善这篇文章。

Read More

简介

iOS有三种多线程编程的技术分别是NSThread 、Cocoa NSOperation、GCD,抽象度层次是从低到高的,抽象度越高的使用越简单,也是Apple最推荐使用的。在前面呢我对GCD的基本使用做过一些简单的总结,大家有空可以看看。这里呢我主要对NSThread的一些基本的使用呢做一些基本的概括。主要是对自己进行一些总结,也希望对大家使用NSThread的开发者有用。

NSThread相比其他两个的用法呢,最大的差别就是我们要对我们做的事情负责,简单来说就是我们用了它,就得需要自己管理thread的生命周期,线程之间的同步也需要自己手动添加代码,其实呢也没那么麻烦的哈,不要被吓到了。从事过java开发的人来说呢thread就更好理解了,因为他们是完全类似的。是不是已经迫不及待了,那我们就进入正题吧。

启动方式

Read More

GCD介绍

Grand Central Dispatch 简称(GCD)是苹果公司开发的技术,以优化的应用程序支持多核心处理器和其他的对称多处理系统的系统。这建立在任务并行执行的线程池模式的基础上的。它首次发布在Mac OS X 10.6 ,iOS 4及以上也可用。简单的说它提供了IOS多核编程的解决方法,注意她是纯C语言,并且提供了非常多强大的函数,它是基于函数使用的,而不是我们面向对象里边说的方法。

原理

GCD的工作原理是:让程序平行排队的特定任务,根据可用的处理资源,安排他们在任何可用的处理器核心上执行任务。一个任务可以是一个函数(function)或者是一个block。GCD的底层依然是用线程实现,不过这样可以让程序员不用关注实现的细节。GCD中的FIFO队列称为dispatchqueue,它可以保证先进来的任务先得到执行,即操作系统里边的先进先出,后进后出。

Read More

简介

UITableView相信对于诸多的从事IOS开发的人来说已经是非常熟悉的了,可以说iPhone很多应用都有使用,应该来说是一个比较频繁的组件了,对于它的很多使用技巧,我们今天就不做讨论了,这里主要说的是UITableViewCell的重用机制。

对于一个好的应用开发来说,系统的架构是很重要的,必须清晰明了,各部分设计必须分工明确。比如现在很流行的MVC系统架构。把视图、模型、控制都分割开来。其实UITableViewCell设计思想也是这样的,开发者必须明白,要想达到一个很好的cell复用效果,那么我们就必须明白,把cell和数据分割开来。要是我们明白这点,那么我们在进行cell复用的时候思路就很清晰了。并且可以规避掉我们初学者看起来很无厘头的bug。比如在进行上下滑动的时候,cell重复显示了以前的,这并不是我们想看到的。

原理

首先我们先看段代码

Read More

我们在进行IOS手机开发的时候,理解原生方法的执行次序,以及执行原理是非常重要的,我们在开发的过程当中,有的时候就是对IOS执行方法的次序及机制不够了解,进而容易犯一些比较低级的错误,而这些错误我们是完全可以轻易避免的。这篇文章是我对UIViewController里边的几个方法的调用次序做一个总结,希望以后对自己或者浏览者有用。

一、LoadView

简单来说loadView方法是用来负责创建UIViewController的view的,也就是说当UIViewController的nib为nil的时候调用。它有两种调用方式,一种是我们重载了此方法,另一种是如果没重载调用[super loadView]

下面我们说说没重载的情况,也就是[super loadView]会怎样做创建view的事情
1.它会先去查找与UIViewController相关联的xib文件,通过加载xib文件来创建UIViewController的view,如果在初始化UIViewController指定了xib文件名,就会根据传入的xib文件名加载对应的xib文件 ,方法为

Read More

前言

我们开发的手机应用,为了适应客户习惯,也为了提高客户体验,有时我们不得不在手机处于不同状态的时候使我们手机屏幕也跟着旋转,但是,有的时候特殊情况下我们需要将屏幕强制旋转,以达到我们想要的效果。这里根据自己的经验为大家介绍3种强制转换的方式。

第一种

在我们项目的初始化文件里(也就是Delegate文件)加上下边这个方法,当然这是一个全局设置,也就是说当我们设置了这个方法后对我们整个项目都会起作用。

Read More

什么是MyBatis?MyBatis是一个运用于持久层的数据操作框架。MyBatis是从iBatis升级而来。使用MyBatis提供的ORM机制,业务逻辑层实现人员操作的是JAVA对象,该层面与Hibernate机制中的相同。对于具体的数据库操作而言,Hibernate会自动生成SQL并执行,而MyBatis要求开发人员具体编写SQL语句。MyBatis在数据库移植性和SQL开发工作量上进行了让步,从而提升了系统设计的灵活性,扩展了其自由空间。

为什么需要MyBatis?系统的部分或全部数据来自现有数据库,出于安全性的考虑,只为开发团队提供几条Select SQL(或存储过程)以获取所需数据,具体的表结构不予公开。开发规范中要求,所有牵涉到业务逻辑部分的数据库操作,必须在数据库层由存储过程实现(对于金融行业而言,工商银行、中国银行和交通银行,都在开发规范中严格指定)。系统数据处理量巨大,性能要求极为苛刻,这通常意味着我们必须由经过高度优化的SQL语句(或存储过程)才能达到系统性能设计指标。

Read More