- 博客(22)
- 资源 (28)
- 收藏
- 关注
原创 iOS开发——单例的实现、使用与架构
单例在我们开发中是最常用的设计模式,在iOS中也是如此。单例可以保证某个类的实例在程序中是唯一的,便于进行资源和数据的共享。使用的设计原则是单一职责原则。我们来看看在iOS中本身自带的类或者方法哪些使用了单例的模式:(1)UIAccelerometer类和sharedAccelerometer方法,一般如果方法名中有shared这样的词,就可以认为这是一个可以整个应用程序共享的实例变量,一般是使用
2015-12-24 22:08:44 8464 5
原创 iOS开发——使用Charles进行https网络抓包详解
我在前面两篇博客中《网络抓包工具Charles的介绍与使用》《iOS开发——使用Charles进行http网络抓包详解》对Charles的http抓包进行了详细的讲解。今天我们来实现一下进行https的抓包,比http抓包稍微麻烦一点。(1)https初级的配置请参考《网络抓包工具Charles的介绍与使用》中的https配置部分。(2)由于目前iOS9更改了对于https网络的安全机制,所以还需
2015-12-23 22:34:39 7342
原创 iOS开发——使用Charles进行http网络抓包详解
我在之前一篇博客《网络抓包工具Charles的介绍与使用》中简单介绍了Charles的安装破解,以及进行简单的Charles抓包配置的介绍。今天我们来详细介绍下使用Charles进行http抓包,关于https抓包,我将会在另一篇博客中介绍。(1)http抓包的配置,请参考《网络抓包工具Charles的介绍与使用》这篇博客。(2)为了使抓包的结果清晰,便于调试,我写了一个简单的网络请求,通过点击按
2015-12-23 21:48:08 7777
原创 iOS开发——ActionSheet的使用与弹出选择对话框
在我们的iOS开发中,常会见到如下界面的需求:。也就是点击按钮,出现选择提示框,我们今天使用两种方式(ActionSheet和AlertController)来实现该功能。【使用ActionSheet实现】(1)实现代码如下:#import "ViewController.h"@interface ViewController ()@end@implementation ViewCon
2015-12-23 13:39:30 9287 6
原创 iOS调试技巧——编译器预定义宏
我们都知道,Objective-C是C语言的超集,必然保留了C语言的一些特性。今天我们就利用这些编译器预定义的宏来输出一些信息,以达到调试程序的目的。这些宏包括:(1)__FUNCTION__ ://获取当前方法名;(2)__func__ ://获取当前方法名;(3)__PRETTY_FUNCTION__ ://获取当前方法名;(4)__LINE__ ://获取当前所在行;(5)_
2015-12-22 21:38:18 4270 4
原创 iOS开发——代码生成TabBar与视图切换详解
我在之前多篇博客中讲解了在不使用storyboard而使用nib文件的情况下,使用代码生成导航栏并进行跳转,具体可以参考《iOS开发——界面跳转与返回及视图类型详解》《iOS纯代码实现界面建立、跳转、导航栏(无storyboard、无nib)(Objective-C)》。今天我来讲解下在使用nib搭建界面的情况下,用代码生成TabBar,并进行界面之间的跳转。代码示例已经上传至:https://g
2015-12-22 17:39:48 5095
原创 网络抓包工具Charles的介绍与使用
在复杂的App开发过程中,我们会涉及各种复杂的网络操作,各种API的调用和数据接收。如果我们只是通过控制台来查看网络的输入输出,就会非常麻烦。在Mac上有一款非常优秀的网络抓包工具——Charles,在iOS开发中也是常常用到。今天我们就来介绍如何安装使用Charles。关于Charles安装包、破解包和证书我已经上传至网盘:http://pan.baidu.com/s/1numMoTr 。
2015-12-22 09:47:07 12059 10
原创 iOS开发——使用delegate进行消息传递
iOS开发中,界面之间传递消息或者数据是最基本的一种需求,我们可以使用很多方法来实现这种需求,比如在头文件中暴露一个属性、比如使用notification等等。今天我们要来介绍另一种方式:使用delegate传递消息。 delegate称为委托,同时也是一种代理设计模式。使用委托避免了类与类的耦合度过高。利用委托赋值更加安全可控,委托赋值在不暴露自己类的属性的前提下就可以对自己进行
2015-12-18 19:40:15 4157 1
原创 iOS中NSNotification浅析
在iOS开发中有一个“Notification Center”的概念。这是一个单例对象,允许当事件发生时通知一些对象。它允许我们在低耦合的情况下,满足控制器与一个任意的对象进行通信的目的。 对于一个发出的通知,多个对象能够做出反应,即一对多的方式实现简单。实现一个Notification的步骤如下:(1)注册通知:addObserver:selector:name:object
2015-12-18 10:51:03 3139
原创 iOS开发——远程消息推送的实现
在我们使用App的过程中,总是会收到很多的消息推送,今天我们就要来实现这个功能。首先消息推送分为本地消息推送和远程消息推送,而其中又以远程消息最为常用。但是在推送远程消息之前,有两个前提条件,你需要购买苹果的开发者账号,也就是每年99刀;并且有一台iOS真机(模拟器不能测试推送)。其实远程推送需要有服务器,但是我们自己暂时没有服务器,到时候后台使用Parse进行推送。实现步骤如下:(1)进入苹
2015-12-18 09:55:55 3027
原创 iOS多线程开发——NSOperation/NSOperationQueue浅析
多线程是我们程序开发中不得不面对的问题。iOS开发中主要有三种多线程实现机制:NSThread,NSOperationQueue,GCD,抽象层次分别增高,抽象层越高,使用就越方面。我在前面的5篇博客中《GCD实践——串行队列/并发队列与iOS多线程详解》等讲解了如何使用GCD,今天我们来学习一下NSOperationQueue的使用。 在OS X10.6 和iOS 4之前,NSOp
2015-12-13 14:15:11 3735 1
原创 iOS开发——使用MBProgressHUD来增加用户体验(二)
我在上一篇博客《iOS开发——使用MBProgressHUD来增加用户体验》主要实现了使用别人已经封装的MBProgressHUD来进行加载提示,可以说是相当的方便。今天我们使用Github上原生的MBProgressHUD第三方库来进行加载提示,会比别人已经封装的麻烦一点点。代码已经上传至:https://github.com/chenyufeng1991/UseMBProgressHUD。实现
2015-12-12 14:23:59 5391
原创 iOS开发——使用MBProgressHUD来增加用户体验
对于移动客户端应用来说,本身就非常注意用户体验,比如一个长时间的加载造成界面卡死,MBProgressHUD就可以帮助你解决该问题。MBProgressHUD可以在网页加载、下载等耗时操作中给予用户以提示。HUD的本意就是抬头显示功能。今天我们就尝试来使用MBProgressHUD这个强大的第三方库(感谢)。MBProgressHUD在Github的地址:https://github.com/jd
2015-12-12 11:23:11 6952 4
原创 关于使用AFNetworking3.0.0报错的解决方案与建议
最近,AFNetworking迎来了重大更新,从之前的2.6.3升级到了3.0.0 。下面是AFNetworking的版本情况:. 从上面可以看到,里面包含Serialization,Security,Reachability,NSURLSession,UIKit5个部分,从Cocoapods安装之后,3.0.0目录结构如下:。 但是使用3.0
2015-12-12 10:22:07 5354
原创 iOS开发编码建议与规范(持续更新中)
在开发过程中,我们不仅要去看别人的代码,也要让别人看我们的代码。那么,有一个良好的编码习惯将会非常重要。下面将会罗列使用Objective-C来开发iOS的编码建议。【1】任意函数长度不得超过50行。(其实很容易就超过50行,这就要考虑代码抽取了。)【2】任意行代码不能超过80字符。(其实也很容易超过80字符,可以考虑多行显示,比如有多个参数时,可以每个参数放一行。)可以在
2015-12-11 17:13:21 7474
原创 iOS开发效率篇——Xcode优秀插件使用(持续更新中)
我在上一篇博客《iOS开发——使用Alcatraz管理Xcode插件》中介绍了如何安装Alcatraz来管理Xcode中的插件,并主要讲解了一个ColorSense插件来进行颜色的设置,的确是能方便我们的编程。荀子说:君子性非异也,善假于物也。我们不仅要善于编码,还要善于利用工具。废话不说,我把比较不错插件在这里做个介绍。【StringSense】 当我们经常在代码中输入大段字符串
2015-12-11 01:27:16 7570 7
原创 iOS开发——使用Alcatraz管理Xcode插件
Xcode是一款非常优秀的IDE,如果再加上一些插件的话,那就更是如虎添翼。今天我们就使用Alcatraz这个工具来管理Xcode插件,来提高我们的编程效率。类似使用cocoapods来管理iOS中大量的第三方库一样。今天我第一个为大家介绍的插件是:ColorSense。使用ColorSense可以方便的设置颜色。 首先来安装Alcatraz,步骤如下:(1)首先建议最好能翻墙
2015-12-10 17:30:07 6360 4
原创 iOS开发——定制圆形头像与照相机图库的使用
现在的App都非常流行圆形的头像,比如QQ右上角的头像,今日头条的头像等等。这已经成为App设计的趋势了。今天我们就来简单实现一下这个功能,我还会把从手机拍照中或者图库中取出作为头像的照片存储到应用程序沙盒中。下次进入应用的时候还会显示该头像。
2015-12-09 23:49:39 4689 2
原创 iOS开发——网络连接判断
iOS开发必然会涉及网络操作,作为优化用户体验的第一步,在请求网络前,往往首先需要判断客户端是否连接网络,并给用户提示。然后用户才会去进行打开网络或连接WiFi等操作。下面我将会使用苹果提供的Reachability文件去进行网络连接的判断。代码已经上传:https://github.com/chenyufeng1991/JudgeNetworkConnect 。共有两个案例,下面分别来实
2015-12-09 22:01:20 2615
原创 iOS开发——界面跳转与返回及视图类型详解
iOS开发中界面跳转是必不可少的一个功能,一个完整的App必然是由多个界面组成的。我在这篇博客中将会较为全面的讲解在是否有导航的情况下进行跳转以及返回,并且对modal、push、custom等视图做一个介绍。代码我已经上传至:https://github.com/chenyufeng1991/NavigationTest 。 之前我也写过一篇关于导航栏的博客《iOS纯代码实现界面建立、跳转、
2015-12-06 15:35:17 10506
原创 iOS高级开发——CollectionView修改cell的文本及模型重构
该篇博客是在《iOS高级开发——CollectionView的动态增删cell及模型重构》的基础上继续进行开发的。在之前那篇博客中,我们实现了动态的增删cell,并且使用了模型Model进行重构。今天我们要实现的是动态修改cell中的描述文字,通过这个案例,我们能发现使用Model的好处。代码已经上传至:https://github.com/chenyufeng1991/CollectionVie
2015-12-02 15:01:25 3714
原创 iOS高级开发——CollectionView的动态增删cell及模型重构
CollectionView是iOS开发中的高级控件,比其他控件使用起来要复杂。我在前面几篇博客中讲解了CollectionView的一些高级用法:《iOS高级开发——CollectionView的cell长按事件实现》、《iOS高级开发——CollectionView的cell中按钮的点击实现》、《iOS项目开发实战——实现UICollectionView的动态增加Cell与Section》。今
2015-12-02 10:08:39 9842 4
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人