
iOS开发那些事
文章平均质量分 92
分享iOS开发知识,开发经验。跟上iOS脚步,一起搞iOS吧。
码农老关【关东升】
关东升,国内著名技术专家,架构师,项目经理、技术顾问,技术图书作家,51CTO学院金牌讲师。
擅长技术:
移动开发、前后端技术、游戏开发、数据库开发与设计、软件架构设计等多种IT技术。
20多年教学经验:
教授近万名学员,近期为中国移动、中国联通、南方航空、中石油、工商银行、平安银行和天津港务局等企事业单位授课。
著有50本多部畅销书:
《看漫画学Python》
《看漫画学Python2》
《极简ChatGPT: 如何利用AI提高办公效率》
《极简ChatGPT:如何利用AI实现Python自动编程》
《AI时代程序员开发之道:ChatGPT让程序员插上翅膀》
展开
-
iOS数据持久化-SQLite数据库使用详解
使用SQLite数据库创建数据库创建数据库过程需要3个步骤:1、使用sqlite3_open函数打开数据库;2、使用sqlite3_exec函数执行Create Table语句,创建数据库表;3、使用sqlite3_close函数释放资源。原创 2013-07-18 10:16:17 · 7167 阅读 · 1 评论 -
iOS6定位服务编程详解
现在的移动设备很多都提供定位服务,使用iOS系统的iPhone、iPod Touch和iPad都可以提供位置服务,iOS设备能提供3种不同途径进行定位:Wifi, 蜂窝式移动电话基站, GPS卫星iOS不像Android系统在定位服务编程时,可以指定采用哪种途径进行定位。iOS的API把底层这些细节屏蔽掉了,开发人员和用户并不知道现在设备是采用哪种方式进行定位的,iOS系统会根据设备的情况和周围的环境,采用一套最佳的解决方案。这个方案是这样的,如果能够接收GPS信息,那么设备优先采用GPS定位,否则采用原创 2013-07-09 16:19:42 · 10522 阅读 · 1 评论 -
iOS开发那些事-iOS6苹果地图实用开发
在iOS 6之后,不再使用谷歌地图了,而是使用苹果自己的地图,但是API编程接口没有太大的变化。开发人员不需要再学习很多新东西就能开发地图应用,这是负责任的做法。因此本节介绍的内容也同样适用于iOS5上运行地图应用开发。iOS应用程序中使用Map Kit API开发地图应用程序。 其核心是MKMapView类使用。我们可以设置地图显示方式、控制地图,可以在地图上添加标注。原创 2013-07-04 09:57:05 · 15174 阅读 · 4 评论 -
iOS访问通讯录开发-读取联系人信息
读取通信录中的联系人一般的过程是先查找联系人记录,然后再访问记录的属性,属性又可以分为单值属性和多值属性。通过下面例子介绍联系人的查询,以及单值属性和多值属性的访问,还有读取联系人中的图片数据。本案例是从iOS设备上读取通讯录中的联系人,并将其显示在一个表视图中,可以进行查询,点击联系人进入详细信息画面。访问通讯录的应用必须要做的两件事情:1、添加AddressBook和AddressBookUI原创 2013-07-01 10:26:48 · 17204 阅读 · 1 评论 -
iOS开发那些事-iOS应用本地化-资源文件本地化
资源文件包括:图片文件、音频文件以及前文提到的Localizable.strings等文件,它们的特点是都是随着应用一起打包发布。但就本地化而言无论是图片文件还是音频文件都必须实现的步骤都是类似的,因此我们重点介绍图片文件的本地化。资源文件的本地化,也是需要准备好几个本地化版本的文件。图片需要本地化,就是要创建几个版本的本地化文件。例如,我们要实现一个游戏的控制画面,画面中有控制关闭或者打开背景音原创 2013-06-25 09:34:28 · 3708 阅读 · 3 评论 -
iOS开发那些事-iOS应用本地化-文本信息本地化
文本信息本地化在本地化工作中占有很大的比例。包括了:应用名称本地化、系统按钮和信息本地化,以及静态文本信息本地化。系统按钮和信息本地化还记得天气预报应用背后的“完成”按钮吗,它在中文环境下是“完成”,在英语环境下是“Done”。还有一些系统给我们的提示信息,连接蓝牙设备时的系统提示。它在中文环境下是中文提示,在英语环境下是英文提示。系统按钮上的文本和系统提示信息的文字我们都是不能修改的,但是如果我原创 2013-06-21 10:06:33 · 6042 阅读 · 0 评论 -
iOS开发那些-如何打包iOS应用程序
我们把应用上传到App Store之前需要把编译的二进制文件和资源文件打成压缩包,压缩格式是zip。首页找到编译到什么地方,这个很重要也不太好找,我们可以看看编译日志,找到其中的Create universal binary HelloWorld…的内容,然后展开内容如下:Create Universal Binary /Users/tonyguan/Library/Developer/Xcode原创 2013-06-03 10:22:10 · 5576 阅读 · 0 评论 -
iOS开发那些事-如何编译iOS程序
我们从编写到发布应用会经历3个阶段:模拟器上运行调试、设备上运行调试和发布编译,苹果为了防止非法设备和非开发人员调试和发布应用,使用配置概要文件(Provisioning Profiles)控制在设备上运行调试和发布编译阶段,配置概要文件分为两种:开发配置概要文件和发布配置概要文件1、创建发布配置概要文件创建过程是先登录iOS开发中心的配置门户网站(iOS Provisioning Portal)原创 2013-05-31 09:39:44 · 3260 阅读 · 1 评论 -
iOS开发那些事-Passbook详解与开发案例(附视频)
Passbook是iOS 6的新功能,只能在iPhone和iPod touch设备中使用。它可以帮助我们管理商家发放的电子会员卡、积分卡、优惠券等。这将对未来电子商务产生深远的影响。商家通过发放会员卡、积分卡、优惠券等,提高与消费者的互动,吸引人们更多消费。Passbook的诞生,正是为了将所有这些“卡”和“券”电子化,存放在iPhone或iPod touch里。Passbook与PassiOS原创 2013-05-29 10:14:48 · 8761 阅读 · 3 评论 -
推送通知iOS客户端编写实现及推送服务器端编写
1、iOS客户端编程推送通知技术在Mac OS X和iOS系统上都可以运行,我们本章主要介绍iOS客户端编程,推送通知的编程比较简单,编程的关键是获得令牌,这是从APNS返回的,然后还有把提交给内容提供商。下面我们看看开发之前的一些准备工作。 配置Xcode工程编写iOS推送应用需要在Xcode工程中进行一些配置,这些配置是主要是设置代码签名标识,代码签名标识的前提要有配置概要文件(Provisi原创 2013-05-23 08:02:33 · 22965 阅读 · 2 评论 -
如何配置iOS推送通知
配置推送通知比较麻烦,需要iOS开发者帐号,然后配置一个Apple ID、配置概要文件和SSL证书。 1 证书签名请求首先需要证书签名请求,这需要在Mac OS X系统中完成,通过在系统中选择“实用工具”→“钥匙串访问”,然后在打开菜单“钥匙串访问”→“证书助理”→“从证书颁发机构请求证书…”。选择“从证书颁发机构请求证书”菜单后会弹出证书助手对话框,在用户电子邮件地址输入你的邮件地址,常用名称中原创 2013-05-14 09:13:38 · 3177 阅读 · 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 · 11098 阅读 · 2 评论 -
iOS 6分享列表——UIActivityViewController详解
在iOS 6之后提供了一个分享列表视图,它通过UIActivityViewController管理。苹果设计它主要的目的是替换分享动作选单(ActionSheet),分享动作选单是出于分享目的的动作选单。通过动作选单上的选择按钮,可以把图片分享给别人。但是随着iOS功能的不断增加,需要分享的内容越来越多,它会以模态视图方式呈现。iPad设备的分享列表,它会以Popover视图方式呈现。从图中可以看原创 2013-05-08 11:14:42 · 13991 阅读 · 1 评论 -
iOS网络编程-解决iCloud文档存储过程中文档冲突问题
iCloud文档在保存的过程中难免会发生冲突,我们必须要有一套解决冲突的策略。策略的采用要根据用户的需求而定,有的简单有的复杂,最简单的是直接使用当前版本覆盖冲突版本。复杂的策略,例如:如果是两个文本文件冲突,可以将两个冲突点列出来,让用户来判断再进行保存。我们采用的策略是使用当前版本覆盖以前的版本。解决冲突首先需要在updateUbiquitousDocuments:方法中注册UIDocumen原创 2013-05-06 09:11:59 · 3255 阅读 · 0 评论 -
iOS网络编程-iCloud键值数据存储编程实例
iCloud键值数据存储设计iCloud键值数据存储编程实例,画面中有两个开关控件,左图是设备1点击“设置iCloud数据”按钮,将控件状态保存到iCloud服务器。右图是设备2画面,过几秒钟后设备2收到变更通知。 配置Xcode工程使用Xcode创建一个iOS工程,工程创建好之后,选择TAGETS→MyNotes→Summary→Entitlements,我们可以在这里配置授权信息。然后我们还原创 2013-04-28 09:31:52 · 9536 阅读 · 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 · 3669 阅读 · 0 评论 -
iOS开发那些事-移动平台架构设计
低耦合企业级系统架构设计我们往往称JavaEE或.Net 开发的产品为“系统”,而移动平台(主要是:Android、iOS和Window Phone)开发的产品为“应用”。“系统”比较复杂,需要架构设计,而“应用”相对比较简单,这是不是意味着我们不需要考虑架构问题呢? 我们首先了解一下企业级系统架构设计。软件设计的原则是提高软件系统的“可复用性”和“可扩展性”,系统架构设计采用层次划分方式,这些层原创 2013-04-24 09:11:29 · 10414 阅读 · 8 评论 -
iOS开发那些事-构建自适应iPhone和iPad工程
有的时候应用需要能够在iPhone和iPad上运行,当然我们可以选择做两个完全不同的工程,然后共用一些类,但是我们也可以只创建一个工程,然后编译生成一个产品,这个产品能够自适应iPhone和iPad设备,然后在App Stroe发布的时候,它会有两套不同的截图展示给用户。App Store上的Evernote应用,它有两套截图iPhone和iPad,这说明Evernote就是自适应iPhone和i原创 2013-04-22 16:05:59 · 9634 阅读 · 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 · 7975 阅读 · 0 评论 -
iOS网络编程实践--NSStream实现TCP Socket iPhone客户端
客户端我们使用iPhone应用程序,画面比较简单。点击发送按钮,给服务器发送一些字符串过去。点击接收按钮就会从服务器读取一些字符串,并且显示在画面上。有关客户端应用的UI部分不再介绍了,我们直接看代码部分,Socket客户端可以采用CFStream或NSStream实现。为了给读者介绍更多的知识,本例我们采用NSStream实现。NSStream实现采用Objective-C语言,一些面向对象的类原创 2013-04-15 11:37:03 · 18115 阅读 · 5 评论 -
iOS网络编程-iOS中Socket编程介绍
使用Socket进行C/S结构编程,连接过程 服务器端监听某个端口是否有连接请求。服务器端程序处于堵塞状态,直到客户端向服务器端发出连接请求,服务器端接受请求程序才能向下运行。一旦连接建立起来,通过Socket可以获得输入输出流对象。借助于输入输出流对象就可以实现与客户端的通讯,最后不要忘记关闭Socket和释放一些资源(包括:关闭输入输出流)。客户端流程是先指定要通讯的服务器IP地址、端口和采用原创 2013-04-12 11:09:27 · 5341 阅读 · 1 评论 -
iOS网络编程实践--蓝牙对等网络通信实例讲解
基于蓝牙对等网络通信就是使用Game Kit中的GKSession、GKSessionDelegate、GKPeerPickerController和GKPeerPickerControllerDelegate来实现。开发过程分为3个步骤:连接、发送数据和接收数据。下面我们通过一个实例介绍一下基于蓝牙对等网络通信过程。用户点击“连接”按钮,建立连接过程中会出现连接对话框,根据具体情况也会弹出其它的原创 2013-04-10 08:47:57 · 13538 阅读 · 12 评论 -
iOS网络编程-MBProgressHUD等待指示器
第三方的等待指示器,MBProgressHUD就是第三方提供的等待指示器框架。下面是MBProgressHUD提供的等待指示器样式,它们基本可以分为:未知结束时间和已知结束时间两大类等待指示器,在MBProgressHUD中可以为等待指示器添加标签和详细标签MBProgressHUD的下载地址是https://github.com/matej/MBProgressHUD,我们将下载的源文件中的MB原创 2013-04-09 10:21:21 · 7329 阅读 · 5 评论 -
iOS网络编程-ASIHTTPRequest小例子-数据请求队列
实例:请求队列我们通过一个例子介绍一下请求队列使用,我们设计了一个应用,用户点击GO按钮从服务器同时下载两张图片显示在画面中。 我们直接看看主视图控制器ViewController.h代码如下:#import “ASIHTTPRequest.h”#import “ASINetworkQueue.h”#import “NSNumber+Message.h”#import “NSStrin原创 2013-04-05 08:32:57 · 3944 阅读 · 0 评论 -
iOS网络编程-ASIHTTPRequest异步请求
我们运行程序,如果网速很慢,查询的时候会一直黑屏,直到请求结束画面才出现,这样用户体验很不好。因此同步请求一般只是在某个子线 程中使用,而不在主线程中使用。异步请求的用户体验要比同步请求好,因此一般情况下异步请求用的很多。等待过程中在状态栏上会出现网络等待指示器的经典旋 转小图标,而使用ASIHTTPRequest异步请求就实现这些效果,不用自己额外编写代码。ASIHTTPRequest和ASIF原创 2013-04-03 09:24:04 · 5758 阅读 · 4 评论 -
iOS网络编程-ASIHTTPRequest框架同步请求
在ASIHTTPRequest框架中与HTTP请求相关的类有:ASIHTTPRequest和ASIFormDataRequest,其中最常用的是ASIHTTPRequest,ASIFormDataRequest是ASIHTTPRequest的子类,ASIFormDataRequest可以发送类似与HTML表单数据,也可以上传数据,默认采用POST请求方法。也可以其它的HTTP请求方法。它们都可以进原创 2013-04-01 08:21:27 · 4027 阅读 · 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 · 3295 阅读 · 2 评论 -
iOS开发那些事-iOS网络编程异步GET方法请求编程
上篇博客提到同步请求,同步请求用户体验不好,并且介绍了在同步方法上实现异步,事实上iOS SDK也提供了异步请求的方法。异步请求会使用NSURLConnection委托协议NSURLConnectionDelegate。在请求不同阶段会回调委托对象方法。NSURLConnectionDelegate协议的方法有:connection:didReceiveData: 请求成功,开始接收数据,如果数据原创 2013-03-27 10:04:58 · 3084 阅读 · 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 · 4094 阅读 · 5 评论 -
iOS开发那些事-Git在Xcode中的配置与使用常见问题总结
书接上回提出的Git在Xcode中的配置与使用常见问题4个问题问题1,如何在Xcode中创建代码库,并添加和提交代码到代码库?问题2,如何在Xcode中提交推送给远程服务器代码库?问题3,如何在Xcode中克隆远程服务器代码库到本地?问题4,如何使用Xcode获取远程代码库数据,并解决冲突问题? 1、问题1创建代码库有两种方式,一种是新建工程时候创建,另一种是把现有的工程拷贝到代码库下,再初始化代原创 2013-03-21 10:01:49 · 3671 阅读 · 0 评论 -
iOS开发那些事-Git在Xcode中的配置与使用
很多Git命令都是在命令行下运行的,命令行下管理Git有很多优点不用多说。但最大的缺点是要求用户记住这些命令。因此Git图形界面还是很受一些用户欢迎的,其中Xcode作为集成开发环境工具,也提供了一定Git图形界面功能。但是要想在Xcode中使用Git管理工程代码还想需要进行一些配置,然后才能使用。如果我们是使用Xcode 4创建的一个iOS工程,在终端的命令行中提交代码时候,可能会出现下面的部分原创 2013-03-20 08:23:59 · 13189 阅读 · 1 评论 -
iOS开发那些事-故事板实现标签导航
故事板实现标签导航用故事板技术实现标签导航模式。使用“Tabbed Application”模版,创建一个名为 “TabNavigationStoryborad”的工程。勾选“Use Storyborads”、“Use Automatic Reference Counting”。创建完成之后打开MainStoryboard.storyboard。三个Controller Scene 会有由一些线连原创 2013-03-18 09:06:54 · 8264 阅读 · 5 评论 -
iOS开发那些事-nib实现标签导航
nib实现标签导航在目前的Xcode(4.5)版本创建标签导航的应用可以使用工程模板 Tabbed Application。我们可以选择故事板或nib技术实现。故事板创建固然简单,但这种实现方式屏蔽了标签导航很多技术细节,为了更有益于我们学习, 在实现环节我们分别采用了nib技术和storyboard技术。首先我们来看看用nib技术实现的过程。使用“Tabbed Application原创 2013-03-13 10:41:17 · 9581 阅读 · 17 评论 -
iOS开发那些事-平铺导航-基于Page的导航及案例实现
基于分页导航实现在iOS 5之后,可以使用分页控制器(UIPageViewController)构建类似于电子书效果的应用,我们称为基于分页的应用。一个分页应用有很多相关的视图控制器 分页控制器(PageViewController)需要放置在一个父视图控制器中,在分页控制器下面还要有子视图控制器,每个子视图控制器对应图中的一个页面。在基于分页导航实现的应用中需要的类和协议:U原创 2013-03-11 16:41:03 · 5158 阅读 · 0 评论 -
iOS开发那些事-平铺导航–基于分屏导航及案例实现
平铺导航模式是非常重要的导航模式。一般用于简单的扁平化信息浏览或任务。扁平化信息是指这些信息之间没有从属的层次关系,如中国的城市中北京、上 海和哈尔滨之间是扁平化信息,而哈尔滨市与黑龙江省之间的关系是从属的层次关系,层次关系信息可以采用标签导航和树形结构导航。从一个案例开始介绍平铺导航。如果我想为开发一个基于iPhone的“画廊”应用,目前只有3幅名画(左图是达芬奇-蒙娜丽莎、中图是罗丹-思想者、原创 2013-03-07 10:58:39 · 4691 阅读 · 0 评论 -
iOS开发那些事-表视图UI设计模式
软件设计中有设计模式,在UI设计方面也有设计模式。由于表视图的应用在iOS中极其广泛,本节向大家介绍表视图中两个UI设计模式:分页模式和下拉刷新(Pull-to-Refresh)模式。这两种模式已经成为移动平台开发的标准。分页模式 分页模式规范了移动平台进行大量数据请求的处理方式 。下拉刷新模式下拉刷新(Pull-to-Refresh)是重新刷新表视图或列表,原创 2013-03-05 13:18:14 · 3416 阅读 · 0 评论 -
iOS开发那些事--自定义单元格实现
自定义单元格当苹果公司提供给的单元格样式不能我们的业务需求的时候,我们需要自定义单元格。在iOS 5之前,自定义单元格可以有两种实现方式:代码实现和用xib技术实现。用xib技术实现相对比较简单,创建一个xib文件,然后定义一个继承UITableViewCell类单元格类即可。在iOS 5之后我们又有了新的选择,故事板实现方式,这种方式比xib方式更简单一些。我们把简单表视图案例的原型原创 2013-03-01 14:15:28 · 5052 阅读 · 0 评论 -
iOS开发那些事--简单表视图
表视图是iOS开发中使用最频繁的视图,我们一般都会选择以表的形式来展现数据,比如通讯录、频道列表等。表视图分段、分组、索引等功能使我们所展示的数据看起来更规整更有调理,更令人兴奋的是表视图还可以利用细节展示等功能多层次的展示数据,正所谓一表胜千言。 不过,相较于其它控件表视图的使用比较复杂,但是对比于表视图各种灵活多变的功能,我们在使用上花费的努力还是相当值得的。简单表视图表视图的形式原创 2013-02-27 16:17:18 · 2777 阅读 · 0 评论 -
iOS开发那些事-iOS常用设计模式–委托模式案例实现
书接上回,应用案例我们以UITextFieldDelegate为例来说明一下委托的使用。UITextFieldDelegate是控件UITextField的 委托,控件的委托主要负责响应控件事件或控制其他对象。除了UITextField,WebView、UITableView等控件也有相应的委托对象。打开UITextFieldDelegate的API文档,其中有4个有关编辑的方法,还要3个原创 2013-02-25 09:55:09 · 6879 阅读 · 0 评论 -
iOS开发那些事-iOS常用设计模式–委托模式
对于iOS开发,举例Cocoa框架下的几个设计模式为大家分析。当然,Cocoa框架下关于设计模式的内容远远不止这些,我们选择了常用的几种:单例模式、委托模式、观察者模式、MVC模式。委托模式委托模式从GoF 设计装饰(Decorator)、适配器(Adapter)和模板方法(Template Method)等模式演变而来。几乎每一个应用都会或多或少地使用到委托模式。不只是CocoaTo原创 2013-02-21 16:55:29 · 3678 阅读 · 0 评论