iOS开发那些事
文章平均质量分 92
分享iOS开发知识,开发经验。跟上iOS脚步,一起搞iOS吧。
码农老关【关东升】
20多年的老程序员,技术作家、架构师、项目经理。
熟悉Java、Kotlin、Python、iOS、Android、游戏开发。参与设计和开发北京市公交一卡通百亿级大型项目,金融系统微博等移动客户端项目。著有从小白到大牛系列、漫画Python等畅销书作者!《iOS开发指南》等50多部图书。
展开
-
iOS数据持久化-SQLite数据库使用详解
使用SQLite数据库创建数据库创建数据库过程需要3个步骤:1、使用sqlite3_open函数打开数据库;2、使用sqlite3_exec函数执行Create Table语句,创建数据库表;3、使用sqlite3_close函数释放资源。原创 2013-07-18 10:16:17 · 7138 阅读 · 1 评论 -
iOS6定位服务编程详解
现在的移动设备很多都提供定位服务,使用iOS系统的iPhone、iPod Touch和iPad都可以提供位置服务,iOS设备能提供3种不同途径进行定位:Wifi, 蜂窝式移动电话基站, GPS卫星iOS不像Android系统在定位服务编程时,可以指定采用哪种途径进行定位。iOS的API把底层这些细节屏蔽掉了,开发人员和用户并不知道现在设备是采用哪种方式进行定位的,iOS系统会根据设备的情况和周围的环境,采用一套最佳的解决方案。这个方案是这样的,如果能够接收GPS信息,那么设备优先采用GPS定位,否则采用原创 2013-07-09 16:19:42 · 10476 阅读 · 1 评论 -
iOS开发那些事-iOS6苹果地图实用开发
在iOS 6之后,不再使用谷歌地图了,而是使用苹果自己的地图,但是API编程接口没有太大的变化。开发人员不需要再学习很多新东西就能开发地图应用,这是负责任的做法。因此本节介绍的内容也同样适用于iOS5上运行地图应用开发。iOS应用程序中使用Map Kit API开发地图应用程序。 其核心是MKMapView类使用。我们可以设置地图显示方式、控制地图,可以在地图上添加标注。原创 2013-07-04 09:57:05 · 15128 阅读 · 4 评论 -
iOS访问通讯录开发-读取联系人信息
读取通信录中的联系人一般的过程是先查找联系人记录,然后再访问记录的属性,属性又可以分为单值属性和多值属性。通过下面例子介绍联系人的查询,以及单值属性和多值属性的访问,还有读取联系人中的图片数据。本案例是从iOS设备上读取通讯录中的联系人,并将其显示在一个表视图中,可以进行查询,点击联系人进入详细信息画面。访问通讯录的应用必须要做的两件事情:1、添加AddressBook和AddressBookUI原创 2013-07-01 10:26:48 · 17136 阅读 · 1 评论 -
iOS开发那些事-iOS应用本地化-资源文件本地化
资源文件包括:图片文件、音频文件以及前文提到的Localizable.strings等文件,它们的特点是都是随着应用一起打包发布。但就本地化而言无论是图片文件还是音频文件都必须实现的步骤都是类似的,因此我们重点介绍图片文件的本地化。资源文件的本地化,也是需要准备好几个本地化版本的文件。图片需要本地化,就是要创建几个版本的本地化文件。例如,我们要实现一个游戏的控制画面,画面中有控制关闭或者打开背景音原创 2013-06-25 09:34:28 · 3688 阅读 · 3 评论 -
iOS开发那些事-iOS应用本地化-文本信息本地化
文本信息本地化在本地化工作中占有很大的比例。包括了:应用名称本地化、系统按钮和信息本地化,以及静态文本信息本地化。系统按钮和信息本地化还记得天气预报应用背后的“完成”按钮吗,它在中文环境下是“完成”,在英语环境下是“Done”。还有一些系统给我们的提示信息,连接蓝牙设备时的系统提示。它在中文环境下是中文提示,在英语环境下是英文提示。系统按钮上的文本和系统提示信息的文字我们都是不能修改的,但是如果我原创 2013-06-21 10:06:33 · 5995 阅读 · 0 评论 -
iOS开发那些-如何打包iOS应用程序
我们把应用上传到App Store之前需要把编译的二进制文件和资源文件打成压缩包,压缩格式是zip。首页找到编译到什么地方,这个很重要也不太好找,我们可以看看编译日志,找到其中的Create universal binary HelloWorld…的内容,然后展开内容如下:Create Universal Binary /Users/tonyguan/Library/Developer/Xcode原创 2013-06-03 10:22:10 · 5556 阅读 · 0 评论 -
iOS开发那些事-如何编译iOS程序
我们从编写到发布应用会经历3个阶段:模拟器上运行调试、设备上运行调试和发布编译,苹果为了防止非法设备和非开发人员调试和发布应用,使用配置概要文件(Provisioning Profiles)控制在设备上运行调试和发布编译阶段,配置概要文件分为两种:开发配置概要文件和发布配置概要文件1、创建发布配置概要文件创建过程是先登录iOS开发中心的配置门户网站(iOS Provisioning Portal)原创 2013-05-31 09:39:44 · 3240 阅读 · 1 评论 -
iOS开发那些事-Passbook详解与开发案例(附视频)
Passbook是iOS 6的新功能,只能在iPhone和iPod touch设备中使用。它可以帮助我们管理商家发放的电子会员卡、积分卡、优惠券等。这将对未来电子商务产生深远的影响。商家通过发放会员卡、积分卡、优惠券等,提高与消费者的互动,吸引人们更多消费。Passbook的诞生,正是为了将所有这些“卡”和“券”电子化,存放在iPhone或iPod touch里。Passbook与PassiOS原创 2013-05-29 10:14:48 · 8678 阅读 · 3 评论 -
推送通知iOS客户端编写实现及推送服务器端编写
1、iOS客户端编程推送通知技术在Mac OS X和iOS系统上都可以运行,我们本章主要介绍iOS客户端编程,推送通知的编程比较简单,编程的关键是获得令牌,这是从APNS返回的,然后还有把提交给内容提供商。下面我们看看开发之前的一些准备工作。 配置Xcode工程编写iOS推送应用需要在Xcode工程中进行一些配置,这些配置是主要是设置代码签名标识,代码签名标识的前提要有配置概要文件(Provisi原创 2013-05-23 08:02:33 · 22859 阅读 · 2 评论 -
如何配置iOS推送通知
配置推送通知比较麻烦,需要iOS开发者帐号,然后配置一个Apple ID、配置概要文件和SSL证书。 1 证书签名请求首先需要证书签名请求,这需要在Mac OS X系统中完成,通过在系统中选择“实用工具”→“钥匙串访问”,然后在打开菜单“钥匙串访问”→“证书助理”→“从证书颁发机构请求证书…”。选择“从证书颁发机构请求证书”菜单后会弹出证书助手对话框,在用户电子邮件地址输入你的邮件地址,常用名称中原创 2013-05-14 09:13:38 · 3117 阅读 · 0 评论 -
利用iOS API编写简单微博客户端全过程
要编写社交网络客户端程序,可以大体上分为4个主要的步骤下面我们按照这个流程,介绍一下:1、引入Accounts和Social框架工程中需要引入Accounts和Social框架,Accounts框架中有进行用户账户认证所需类,Social框架中SLRequest类是我们所需要的。添加具体步骤是选择工程中的TARGETS→WeiBo→Build Phases→Link Binary With Lib原创 2013-05-10 11:40:15 · 11050 阅读 · 2 评论 -
iOS 6分享列表——UIActivityViewController详解
在iOS 6之后提供了一个分享列表视图,它通过UIActivityViewController管理。苹果设计它主要的目的是替换分享动作选单(ActionSheet),分享动作选单是出于分享目的的动作选单。通过动作选单上的选择按钮,可以把图片分享给别人。但是随着iOS功能的不断增加,需要分享的内容越来越多,它会以模态视图方式呈现。iPad设备的分享列表,它会以Popover视图方式呈现。从图中可以看原创 2013-05-08 11:14:42 · 13932 阅读 · 1 评论 -
iOS网络编程-解决iCloud文档存储过程中文档冲突问题
iCloud文档在保存的过程中难免会发生冲突,我们必须要有一套解决冲突的策略。策略的采用要根据用户的需求而定,有的简单有的复杂,最简单的是直接使用当前版本覆盖冲突版本。复杂的策略,例如:如果是两个文本文件冲突,可以将两个冲突点列出来,让用户来判断再进行保存。我们采用的策略是使用当前版本覆盖以前的版本。解决冲突首先需要在updateUbiquitousDocuments:方法中注册UIDocumen原创 2013-05-06 09:11:59 · 3224 阅读 · 0 评论 -
iOS网络编程-iCloud键值数据存储编程实例
iCloud键值数据存储设计iCloud键值数据存储编程实例,画面中有两个开关控件,左图是设备1点击“设置iCloud数据”按钮,将控件状态保存到iCloud服务器。右图是设备2画面,过几秒钟后设备2收到变更通知。 配置Xcode工程使用Xcode创建一个iOS工程,工程创建好之后,选择TAGETS→MyNotes→Summary→Entitlements,我们可以在这里配置授权信息。然后我们还原创 2013-04-28 09:31:52 · 9493 阅读 · 7 评论 -
iOS网络编程-配置iCloud-图文解说
配置iCloud开发iCloud应用一方面需要准备真实的iOS设备,另一方面还需要有iOS开发者账号,使用iOS开发者账号登录到iOS开发中心的配置门户网站(iOS Provisioning Portal 网址为https://developer.apple.com/ios/manage/overview/index.action),可以为应用做一些与iCloud有关的配置工作。这些工作包括:创建原创 2013-04-26 09:59:13 · 3625 阅读 · 0 评论 -
iOS开发那些事-移动平台架构设计
低耦合企业级系统架构设计我们往往称JavaEE或.Net 开发的产品为“系统”,而移动平台(主要是:Android、iOS和Window Phone)开发的产品为“应用”。“系统”比较复杂,需要架构设计,而“应用”相对比较简单,这是不是意味着我们不需要考虑架构问题呢? 我们首先了解一下企业级系统架构设计。软件设计的原则是提高软件系统的“可复用性”和“可扩展性”,系统架构设计采用层次划分方式,这些层原创 2013-04-24 09:11:29 · 10381 阅读 · 8 评论 -
iOS开发那些事-构建自适应iPhone和iPad工程
有的时候应用需要能够在iPhone和iPad上运行,当然我们可以选择做两个完全不同的工程,然后共用一些类,但是我们也可以只创建一个工程,然后编译生成一个产品,这个产品能够自适应iPhone和iPad设备,然后在App Stroe发布的时候,它会有两套不同的截图展示给用户。App Store上的Evernote应用,它有两套截图iPhone和iPad,这说明Evernote就是自适应iPhone和i原创 2013-04-22 16:05:59 · 9593 阅读 · 0 评论 -
iOS网络编程-iOS中解析Bonjour服务
服务器端Bonjour服务发布成功之后,客户端可以通过NSNetService解析服务,解析成功后,可以获得通讯的数据细节,如:IP地址、端口等信息。首先需要实例化NSNetService对象代码如下:-(id)init {_service = [[NSNetService alloc] initWithDomain:@”local.”type:@”_tonyipp._tcp.” name原创 2013-04-17 16:03:39 · 7917 阅读 · 0 评论 -
iOS网络编程-iOS中Socket编程介绍
使用Socket进行C/S结构编程,连接过程 服务器端监听某个端口是否有连接请求。服务器端程序处于堵塞状态,直到客户端向服务器端发出连接请求,服务器端接受请求程序才能向下运行。一旦连接建立起来,通过Socket可以获得输入输出流对象。借助于输入输出流对象就可以实现与客户端的通讯,最后不要忘记关闭Socket和释放一些资源(包括:关闭输入输出流)。客户端流程是先指定要通讯的服务器IP地址、端口和采用原创 2013-04-12 11:09:27 · 5298 阅读 · 1 评论 -
iOS网络编程实践--NSStream实现TCP Socket iPhone客户端
客户端我们使用iPhone应用程序,画面比较简单。点击发送按钮,给服务器发送一些字符串过去。点击接收按钮就会从服务器读取一些字符串,并且显示在画面上。有关客户端应用的UI部分不再介绍了,我们直接看代码部分,Socket客户端可以采用CFStream或NSStream实现。为了给读者介绍更多的知识,本例我们采用NSStream实现。NSStream实现采用Objective-C语言,一些面向对象的类原创 2013-04-15 11:37:03 · 18069 阅读 · 5 评论 -
iOS网络编程实践--蓝牙对等网络通信实例讲解
基于蓝牙对等网络通信就是使用Game Kit中的GKSession、GKSessionDelegate、GKPeerPickerController和GKPeerPickerControllerDelegate来实现。开发过程分为3个步骤:连接、发送数据和接收数据。下面我们通过一个实例介绍一下基于蓝牙对等网络通信过程。用户点击“连接”按钮,建立连接过程中会出现连接对话框,根据具体情况也会弹出其它的原创 2013-04-10 08:47:57 · 13491 阅读 · 12 评论 -
iOS网络编程-MBProgressHUD等待指示器
第三方的等待指示器,MBProgressHUD就是第三方提供的等待指示器框架。下面是MBProgressHUD提供的等待指示器样式,它们基本可以分为:未知结束时间和已知结束时间两大类等待指示器,在MBProgressHUD中可以为等待指示器添加标签和详细标签MBProgressHUD的下载地址是https://github.com/matej/MBProgressHUD,我们将下载的源文件中的MB原创 2013-04-09 10:21:21 · 7283 阅读 · 5 评论 -
iOS网络编程-ASIHTTPRequest小例子-数据请求队列
实例:请求队列我们通过一个例子介绍一下请求队列使用,我们设计了一个应用,用户点击GO按钮从服务器同时下载两张图片显示在画面中。 我们直接看看主视图控制器ViewController.h代码如下:#import “ASIHTTPRequest.h”#import “ASINetworkQueue.h”#import “NSNumber+Message.h”#import “NSStrin原创 2013-04-05 08:32:57 · 3913 阅读 · 0 评论 -
iOS网络编程-ASIHTTPRequest异步请求
我们运行程序,如果网速很慢,查询的时候会一直黑屏,直到请求结束画面才出现,这样用户体验很不好。因此同步请求一般只是在某个子线 程中使用,而不在主线程中使用。异步请求的用户体验要比同步请求好,因此一般情况下异步请求用的很多。等待过程中在状态栏上会出现网络等待指示器的经典旋 转小图标,而使用ASIHTTPRequest异步请求就实现这些效果,不用自己额外编写代码。ASIHTTPRequest和ASIF原创 2013-04-03 09:24:04 · 5724 阅读 · 4 评论 -
iOS网络编程-ASIHTTPRequest框架同步请求
在ASIHTTPRequest框架中与HTTP请求相关的类有:ASIHTTPRequest和ASIFormDataRequest,其中最常用的是ASIHTTPRequest,ASIFormDataRequest是ASIHTTPRequest的子类,ASIFormDataRequest可以发送类似与HTML表单数据,也可以上传数据,默认采用POST请求方法。也可以其它的HTTP请求方法。它们都可以进原创 2013-04-01 08:21:27 · 3989 阅读 · 2 评论 -
iOS网络编程--ASIHTTPRequest框架安装和配置-图文解说
ASIHTTPRequest框架是优秀的第三方Objective-C的HTTP框架,支持Mac OS X和iOS下的HTTP开发。技术支持网站是http://allseeing-i.com/ASIHTTPRequest/。具有如下优点:支持下载数据放在内存或本地文件容易访问请求和应答HTTP header支持Cookie支持GZIP请求或应答支持缓存支持同步或异步请求支持HTTPS但ASIHTTP原创 2013-03-29 15:13:25 · 3263 阅读 · 2 评论 -
iOS开发那些事-iOS网络编程异步GET方法请求编程
上篇博客提到同步请求,同步请求用户体验不好,并且介绍了在同步方法上实现异步,事实上iOS SDK也提供了异步请求的方法。异步请求会使用NSURLConnection委托协议NSURLConnectionDelegate。在请求不同阶段会回调委托对象方法。NSURLConnectionDelegate协议的方法有:connection:didReceiveData: 请求成功,开始接收数据,如果数据原创 2013-03-27 10:04:58 · 3057 阅读 · 3 评论 -
iOS开发那些事-iOS网络编程同步GET方法请求编程
iOS SDK为HTTP请求提供了同步和异步请求两种不同的API,而且可以使用GET或POST等请求方法。我们先了解其中最为简单的同步GET方法请求。为了学习这些API的使用MyNotes“备忘录”应用实例,数据来源于服务器端,而不是本地的Notes.xml(或Notes.json)文件。首先实现查询业务,查询业务请求可以在主视图控制器MasterViewController类中实现,其中Mast原创 2013-03-25 09:42:14 · 4068 阅读 · 5 评论 -
iOS开发那些事-Git在Xcode中的配置与使用常见问题总结
书接上回提出的Git在Xcode中的配置与使用常见问题4个问题问题1,如何在Xcode中创建代码库,并添加和提交代码到代码库?问题2,如何在Xcode中提交推送给远程服务器代码库?问题3,如何在Xcode中克隆远程服务器代码库到本地?问题4,如何使用Xcode获取远程代码库数据,并解决冲突问题? 1、问题1创建代码库有两种方式,一种是新建工程时候创建,另一种是把现有的工程拷贝到代码库下,再初始化代原创 2013-03-21 10:01:49 · 3613 阅读 · 0 评论 -
使用github管理iOS分布式项目开发
使用github管理iOS分布式项目开发 在我们iOS项目开发过程中, 我们的团队成员都是分散的、分布式,这个项目管理带来了挑战。Git是一个能够进行版本管理的软件,它是cvs和svn的未来。下面我根据我们的经验总结一些心得如下:1、创建github账户2、创建代码仓库3、在xcode中添加项目到github4、创建组织和团队5、其他队员clone项目 创建gi原创 2012-03-28 16:13:07 · 6255 阅读 · 0 评论 -
iOS开发那些事-Git在Xcode中的配置与使用
很多Git命令都是在命令行下运行的,命令行下管理Git有很多优点不用多说。但最大的缺点是要求用户记住这些命令。因此Git图形界面还是很受一些用户欢迎的,其中Xcode作为集成开发环境工具,也提供了一定Git图形界面功能。但是要想在Xcode中使用Git管理工程代码还想需要进行一些配置,然后才能使用。如果我们是使用Xcode 4创建的一个iOS工程,在终端的命令行中提交代码时候,可能会出现下面的部分原创 2013-03-20 08:23:59 · 13137 阅读 · 1 评论 -
iOS开发那些事-故事板实现标签导航
故事板实现标签导航用故事板技术实现标签导航模式。使用“Tabbed Application”模版,创建一个名为 “TabNavigationStoryborad”的工程。勾选“Use Storyborads”、“Use Automatic Reference Counting”。创建完成之后打开MainStoryboard.storyboard。三个Controller Scene 会有由一些线连原创 2013-03-18 09:06:54 · 8239 阅读 · 5 评论 -
iOS开发那些事-nib实现标签导航
nib实现标签导航在目前的Xcode(4.5)版本创建标签导航的应用可以使用工程模板 Tabbed Application。我们可以选择故事板或nib技术实现。故事板创建固然简单,但这种实现方式屏蔽了标签导航很多技术细节,为了更有益于我们学习, 在实现环节我们分别采用了nib技术和storyboard技术。首先我们来看看用nib技术实现的过程。使用“Tabbed Application原创 2013-03-13 10:41:17 · 9537 阅读 · 17 评论 -
iOS开发那些事--OCUnit测试框架
使用OCUnit测试框架iOS单元测试框架原则上,是否使用测试框架都不会影响单元测试结果,但是“工欲善其事,必先利其器”使用单元测试框架更便于我们测试和分析结果。主要的iOS单元测试框架有:OCUnit,是开源测试框架,与Xcode工具集成在一起使用非常方便,测试报告以文本形式输出到输出窗口;GHUnit,是开源测试框架,它可以将测试报告以应用形式可视化输出到设备或模拟器上,也可以原创 2013-01-18 11:16:43 · 5605 阅读 · 1 评论 -
iOS开发那些事--编写OCUnit测试方法-逻辑测试方法
应用测试和逻辑测试添加OCUnit到工程时候,我们提到过,应用测试(Application Testing)和逻辑测试(Logic Testing)两个概念,它们并非是OCUnit中的概念,而是单元测试中概念。应用测试是对整个应用程序进行的测试,设计测试用例时候要考虑到运行环境等因素,例如在测试JavaEE时候需要考虑Web容器和EJB容器等环境问题。而逻辑测试则是轻量级的,只测试某个业务逻辑原创 2013-01-21 12:57:04 · 3505 阅读 · 2 评论 -
iOS开发那些事--编写OCUnit测试方法-应用测试方法
应用测试方法应用测试是测试应用程序的一些功能,这个功能具体到点击一个按钮触发一个事件,因此它主要是测试表示层。我们看看视图控制器ViewController.m中有那些方法需要测试,然后再来设计测试用例。@implementation ViewController- (void)viewDidLoad{[super viewDidLoad];}- (void)didRe原创 2013-01-21 18:02:45 · 2448 阅读 · 4 评论 -
iOS开发那些事--创建基于nib的iOS 6的HelloWorld工程
创建基于nib的HelloWorld工程创建工程启动Xcode,点击File→New→Project菜单,在打开的Choose a template for your new project界面中,选择Single View Application工程模板然后点击Next按钮,随即出现界面。 这里我们需要按照提示并结合自己的实际情况和需要输入相关内容。下面简要说明原创 2013-01-23 15:24:56 · 2660 阅读 · 0 评论 -
iOS开发那些事--创建基于故事板的iOS 6的HelloWorld
基于故事板的HelloWorld工程Storyboard(故事板)是用来替代xib的技术,也是iOS 5最重要的新特性之一。我们用Storyboard(故事板)重构HelloWorld。使用故事板重构HelloWorld勾选“Use Storyboards”项。工程创建完成之后,通过导航进入MainStoryboard.storyboard 添加Label控件原创 2013-01-23 15:34:50 · 2112 阅读 · 0 评论 -
iOS开发那些事--nib、xib与故事板的关系
nib、xib与故事板如果大家使用过苹果的官方资料,一定会发现某些资料上会提到nib文件,那么nib与xib是怎样的一种关系呢?最初只有nib文件,后来将其更名为xib,但大家一直沿袭nib这个叫法(即称xib文件为nib文件),所以目前为止,nib等同于xib。xib文件采用xml格式。前文已提到故事板是用来替代xib的,那么两者除后缀名外,还存在哪些差异呢?首先,在数量上,使用原创 2013-01-25 16:49:55 · 8368 阅读 · 0 评论