iOS开发

2024-09-17

iOS开发(共12篇)

iOS开发 篇1

1 引言

i OS是由苹果公司开发的手持设备操作系统,截止至2011年11月,根据Canalys的数据显示,i OS已经占据了全球智能手机系统市场份额的30%,在美国的市场占有率为43%。贺卡是人们用来传递祝福问候的一种载体,是人脉进行感情疏通的一种外力。下文以贺卡的个性制作为主题,利用i OSSDK,用Navgationbar与Tabbar结合的方法来实现页面展示。使用本地推送UILocal Notification来实现节日提醒。结合各种手势来增加贺卡的可编辑性。该系统有3个主页面:纪念日以及历史几年界面、贺卡界面、反馈界面。用户可以通过纪念日界面增加纪念日,包括提醒时间、电话、摘要等。系统根据不同的天数排序,到了提醒点后弹出警示框来提醒用户。贺卡界面首先是一个贺卡列表浏览,点击贺卡跳出编辑界面,然后可以编辑文字、背景、角度等。最后,做为一款App上线作品,必备的是用户的反馈以及评分,这样才能不断地改进,让用户有更好地体验,这些功能出现在最后一个反馈界面。

2 系统分析

该系统设计了3个功能模块:纪念日模块、卡片模块、更多模块。系统的一般应用流程首先是点增加纪念日按钮,然后开始记录纪念日。纪念数据主要包括纪念日名称、纪念日期、纪念摘要、电话、提醒时间;其次,当纪念时间到了之后,切换卡片模块,从卡片类别选择一张喜欢的贺卡模版,进行自定义编辑;最后,发送到E-mail或者保存本地。还可以给软件评分或者反馈。若纪念日过期,会自动归到历史纪念,功能结构如图1所示。

3 系统实现

3.1 贺卡主页面

贺卡编辑部分是系统的核心部分,主要实现流程是在贺卡展示列表中,点击喜欢的贺卡,跳转到编辑页面。根据编辑选项随意DIY贺卡,效果如图2所示,功能模块包括以下3个类:Card View Ctr,Card List View,Card Edit View。其中,功能实现的类是Card Edit View。

首先是Card List View类,Card List View继承了UIScroll View类并且实现了,UIScroll View的特性就是在UIScroll View类上的页面可以实现随意的拖动。把卡片分为4个主题,所以该类主要有4个方法:

-(void)show BZImage;//壁纸分类-

-(void)show Image;//动物园分类

-(void)show PDImage;//贪吃熊猫分类

-(void)show Card Image;//卡片分类

每个方法代表了一个主题分类,以动物园分类为例列出代码如下:

3.2 纪念日页面显示

3.2.1 Memorial Day View Ctr的变量以及方法

使用Objective-c语言编写Memorial Day View Ctr法,在主视图方面是用Tabelview作为视图展示的类,实现UITable View Delegate,UITable View Data Source两个delegate。每个tableview的cell都使用自定义格式,附加创建一个MEmorial Day Cell类来实现,再将tableview分为两组,一组为未提醒纪念日,另一组为过期纪念日。具体实现如下:

(1)变量定义如下:

(2)方法声明如下:

3.2.2 类的主方法

主方法是在纪念日界面每次出现的时候调用的,用于页面的更新以及数据的载入。代码如下:

3.2.3 UITable View Delegate主要功能

(1)返回分组的组数,以及每组的列数。

该函数功能是用于返回视图中纪念日的数量以及组数,代码如下:

(2)返回每个列的文字。

在苹果利用重用Cell的方法来达到对tableview的性能优化,提供代码如下:

为了页面的美观性,根据天数来排序,当天数处于0-100时候,剩余天数颜色用蓝色。当处于101-200时候,用红色,当大于200时候用黄色,如图3所示。

3.3 贺卡的DIY

3.3.1 DIY编辑功能

DIY编辑功能包括:文字的编辑、底图编辑。其中文字编辑包括文字大小的改变、颜色选择、位置变换。底图编辑包括底图替换、拖动、缩放、旋转、交互界面如图4所示。

DIY编辑功能主要由Card Edit View Ctr类实现。该类的成员变量以及主要实现方法如下:

按钮功能从左到右分别是:文字靠左、居中、靠右、字体大小变小、字体大小变大、文字编辑交互界面如图5所示。实现代码如下:

3.3.2 DIY各种手势

当替换完底图后,可以根据个人的需求对底图进行拖放与放大缩小的跳转,实现替换底图、放大效果、旋转效果等,这个是利用多手势来实现的,旋转效果图6如示。

实现关键代码如下:

3.4 纪念日模块

本模块主要由3个类来实现功能,3个类包括:Memoria Day View Ctr,Add Memorial Ctr,Browsw View Ctr。

Memorial Day View Ctr是实现整个页面布局的。整个View是采用tableview来实现页面的布局,其中tableview的cell使用自定义Cell来实现,自定义Cell类为:Memorial Day Cell,Add Memorial Ctr类是用来实现添加纪念日功能,Browsw View Ctr类是用来实现更新纪念日功能。

3.4.1 数据存储

数据存储是采用序列化到本地,序列化到的数组里面存储的对象是NSDictionary对象,先初始化一个NSDictionary对象user Dictionary,将数组中NSDictionary对象付给user Dictionary,然后根据key获取对应数据传给Cell,最后return Cell显示。

3.4.2 添加纪念日

添加纪念日在各个文本框里面输入纪念日信息,保存时候,该方法计算出保存的时间与此时时间相差多少秒,然后传给推送。并激活,然后再推送。并且将这些数据按对应的key存储到字典中,最后将字典对象存了数组序列化到本地。用户交互界面如图7所示。

3.4.3 修改纪念日

修改跟添加类似,比较不同的就是推送,由于推送无法修改,只能通过取消推送然后再重新激活一个。所以修改比增加多了个取消推送。

3.5 更多模块

最后一个模块更多模块的实现,其中主要包括评分与反馈两个功能,还有一些版本信息等。主要是由More View Ctr类来实现的,更多模块效果图如图8所示。

4 结语

系统已完成真机测试。i OS真机测试步骤比较繁琐,首先要申请一个Apple ID并付99美金年费使之关联成为开发者账号,使用账号登入苹果开发者后台,创建一个密匙载入本地,然后加入钥匙串中,使用xcode获取真机的UDID,在苹果后台加入设备的UDID,并且创建一个证书的APP ID,使用密匙在开发者后台创建一个开发者证书。下载到Mac,双击打开,增加真机。然后在xcode中的Build Setting中设置Code Signing Identity为i Phone Developer,连接真机,编译。

随着时代的飞速发展,生活节奏越来越快,人与人之间越发缺少交流。因此,此应用的开发还是很有意义的。目前这个应用还属于原型开发阶段,功能相对简单,以后还需加上手写功能等,还有一款好的应用,不仅在于功能的实现,更在于用户的体验性、UI的美观性。

摘要:介绍基于iOS平台的贺卡管理系统的开发。系统以Foundation作为核心框架,结合UNKit框架作为显示层,数据存储采用序列化技术,由GestureRecognizer实现贺卡的DIY功能,用自定义Tabbar构造底层框架,使系统的后期维护与二次开发更为便捷。用户通过系统可以随时随地的DIY和发送贺卡,并设计了节日提醒功能,使每个特殊的节日都有一张特殊的贺卡。

关键词:贺卡,IOS系统,DIY定制,Foundation框架,UNKit框架

参考文献

[1](美国)科施恩.Objective-C2.0程序设计[M].北京:机械工业出版社,2009.

[2]Erica Sadun.iPhone开发秘籍[M].北京:人民邮电出版社,2009.

[3](美)艾伦,(美)阿佩尔克莱因.iPhone开发实战[M].北京:人民邮电出版社,2009.

[4]iOS系统介绍[OL].http://baike.baidu.com/view/158983.htm.

[5]iOS先进性[OL].http://www.apple.com/hk/iphone/ios/.

iOS开发 篇2

委托模式

-问题:

处理一切IOS应用都在UIApplication中完成,但是在设计过程中并不友好,它藕合度高,职责不清,难以维护,需要不断不断的重构,因此需要把看似功能很复杂的类分解或者分派成功能明确的类。

Apple中我们经常用两种类,一个是框架类,各种用,不断的用,啥都能用;另一个就是协议类,就是协议。

协议的目的,终究是降低一个对象的复杂度和藕合度。框架类经常会生成一个保持对象的指针,并在特定时刻向委托对象发送消息。就像我们常见的“obj delegate = self;”委托对象做些事情或者委托对象控制。

- 原理:

// 委托类PhilosopherDelegate.h@protocol PhilosopherDelegate@required- (void) sleep;- (void) eat;- (void) work;@end// ViewController.h@interface ViewController : UIViewController@end// ViewController.m@implementation ViewController- (void)viewDidLoad{ [super viewDidLoad]; Philosopher *obj = [[Philosopher alloc] init]; obj.delegate = self; [obj start];}#pragma -- PhilosoperDelegate方法实现- (void) sleep{ NSLog(@”Sleep...“);}- (void) eat{ NSLog(@”eat...“);}- (void) work{ NSLog(@”work...“);}@end

注意,viewDidLoad方法中的obj.delegate = self语句来指定委托对象和通用类的引用关系,

虽然通用类(一般都是UIViewController之类的东东)是UIKit直接提供,但是我们在这个例子中得实现自己的通用类Philosopher,我给出代码,但是真的不是很重要的部分。

// Philosopher.h#import ”PhilosopherDelegate.h“@interface Philosopher :NSObject{ ...}// 可以保存对象的引用@property (nonatomic, weak) iddelegate;- (void) start;- (void) handle;@end// Philosopher.m#import ”Philosopher.h"@implementation Philosopher@synthesize delegate;-(void)start{ ...}-(void)handle{ ...}@end

- 具体应用:太多了,好多空间都有委托,主要负责响应控件事件或控制其他对象。对于那些更复杂的控件,如UITableView,除了要实现委托协议外,还需要实现数据源协议。都是委托设计模式的具体应用。

iOS开发 篇3

【关键词】iOS技术;演唱会咨讯及购票平台;系统设计

随着中国经济的持续发展,演唱会消费越来越成为人民文化消费的重要组成部分,演唱会消费市场因此蓬勃发展。由于智能手机的普及,人民已经迎来移动互联网的时代。所以,搭建一个基于移动互联网的关于演唱会咨询以及购票的平台将给人们带来极大的方便,同时也会大大促进演唱会消费市场的发展。

1、详细设计

1.1、推荐页

(1)推荐页功能描述

推荐页内容的组成:城市选择按钮、分类、UITableView。在XIB上面添加一个320 * 300的UIView视图作为轮播视图的背景视图,在View上面添加上添加一个UIScrollView视图作为轮播视图,一个UILabel作为名称视图。项目启动的时候首先会通过地图定位获取到当前的坐标经纬度,对坐标进行反编码得到当前所在城市的名字,将城市名字通过block语法传到首页,以城市的名字作为字典的key获取字典的value值也就是城市的id,将id传入接口获得首页所需要的数据,将数据解析添加到视图上

1.2 演出页

动态页的组成:刷新按钮、好友动态列表。在控制器的视图上面添加一个UITableView列表视图,自定义封装列表视图里面的内容,先添加一个UIview作为背景视图,在view添加一个30 * 30的UIImageView作为头像视图,添加五个label按要求布好句作为内容和标签的显示视图,通过-(id)initWithStyle?UITableViewCellStyle)style reuseIdentifier?NSString *)reuseIdentifier加载到UITableView上。要进入动态页需要先登录,登录成功后会获取一个用户的私人id通过id请求网络获取到数据进行展示。当进入动态详情页会将一级页面的数据进行筛选处理然后通过点语法保存传到二级页面,在二级页面进行展示,通过获取到的经纬度,调用MapView来做地图定位。

1.3电影页

电影页的组成:正在热映、即将上映、城市选择。通过调用系统的方法可以打开系统相册或相机(需要真机),选择相片通过代理方法将选中的相片显示在事先定义好的UIImageView上面。评价通过for语句循环遍历五个button当点击button的时候为button添加一个图片,通过取反的思想当再次点击的时候就隐藏图片。评论是一个UITextField控件,点击时候会通过代理方法调用出来键盘,同时底部视图会上移一定距离,上移的过程中对其添加了动画,再次点击的时候让键盘对象失去第一响应者隐藏键盘,将你输入内容作为参数通过接口上传到服务器。

1.4 个人中心页

个人中心页的组成:用户头像、设置、注册、登录、我的订单、我的收藏、收货地址、我的优惠券。在控制器的视图上面添加一个UITableView列表视图,自定义封装一个视图,在自定的视图上添加ImagView、Label、Button按照要求进行布局,将自定义封装的视图做一个UitableView的头部视图添加到tableview上,可以实现滑动的效果,视图布局完成后通过用户的id请求网路获取json数据,解析数据对数据内的一维数组进行二维数组的转换,获取的粉丝数据是一个很大的数通过类型转换处理后保存数据然后进行加载展示。

2登录的流程设计

自定义的登陆与注册页面,在注册页面你需要输入的你的邮箱或者是电话的名称进行验证,定义自己的昵称设置自己的秘密,密码需要设置两次,只有两次的秘密相同了才能通过注册,注册成功以后,你就可以到登陆页面进行登陆。登陆页面有输入你注册所用的用户邮箱(电话号码),然后是你的设置的密码,当你的用户邮箱(电话号码)和密码都匹配的时候你才可以登陆成功,成功后会获取到你当前用户的所有信息,以及做一些更深入的操作。

3 设计约束

3. 1 需求约束

(1)软件运行环境约束:能保证兼容从iOS4.3一直到iOS6.1.2完美运行;

(2)硬件运行环境环境(包括运行环境和开发环境)的约束:本系统必须保证能完美运行在iPhone4、iPhone4S、iPhone5、iPhone5S、iPhone5C、iPhone6、iPhone6Plus上面;必须对iPhone5进行完美适配。

(3)接口/协议的约束:保证接口的安全性,必须对接口进行加密,加密规则禁止外泄,统一采用JSON接口格式约束;

(4)用户界面的约束:用户界面UI必须和需求保持一致,严谨出现拉伸,挤压的界面;

4. 设计模式

4.1 单例设计模式

单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

4.2工厂方法设计模式

工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。

工厂方法模式的对简单工厂模式进行了抽象。有一个抽象的Factory类(可以是抽象类和接口),这个类将不再负责具体的产品生产,而是只制定一些规范,具体的生产工作由其子类去完成。在这个模式中,工厂类和产品类往往可以依次对应。即一个抽象工厂对应一个抽象产品,一个具体工厂对应一个具体产品,这个具体的工厂就负责生产对应的产品。

工厂方法模式(Factory Method pattern)是最典型的模板方法模式(Templete Method pattern)应用。

4.3 通知设计模式

Cocoa 的NSNotification类的实例封装了要广播的消息,有兴趣接收信息的对象将利用Cocoa 的NSNotificationCenter类的实例注册它们自己。注册的对象称为观察者。

当将一条通知发送到通知中心时,通知中心会把该通知分发给合适的观察者。单个通知可能被广播给任意数量的观察者,把消息发送到通知中心的对象不需要知道有哪些观察者存在,或者有多少个观者者最终会接收到通知。类似的,观察者不一定需要知道通知来源于何处。

当匿名对象需要被动地观察和反应重要事件时,可以使用通知模式。通知设计模式设计事例:

-(void)zhengObserver(id)observersa selector?SEL)aSelectora name?Nsstring *)aName object?id)aObject;

4.4 鍵值观察设计模式

一个目标对象管理所有依赖于它的观察者对象,并在它自身的状态改变时主动通知观察者对象。这个主动通知通常是通过调用各观察者对象所提供的接口方法来实现的。观察者模式较完美地将目标对象与观察者对象解耦。

远程IO数据采集器的开发 篇4

在复杂的工业现场环境中,存在着许多干扰信号,各种干扰信号都具有一定的随机性和不确定性。可能会造成逻辑混乱,系统控制失灵,产生误动作,甚至造成生产设备损坏和人身伤害等。严重影响了工业生产的稳定运行和可靠性,影响了产品的质量和生产效率,因此,有效地排除和抑制各种干扰,是现代工业必须深入探讨和急待解决的问题。

另外,在工业现场中,常常遇到被控对象和被测信号分布在各个不同的地方,并且他们与控制站之间也有相当长的距离,连接的信号线和控制线都比较长。一方面存在着导线用量大、接线复杂、故障率高、安装工期长、维修困难等问题。另一方面,过长而且又多的导线在一起很容易产生电感电容耦合,而产生干扰信号,严重影响生产的稳定运行,值得探索相应的措施来解决。

现场总线控制是当今工业控制的潮流,现场总线技术的应用能有效地解决一些实际问题。然而,对于一些中小型设备的改造或者对现有的一些老设备大修改造时,原来的PLC系统还完好,如果改为现场总线控制就会造成很多不必要的浪费。并且,工业现场的一些机械控制对实时性和可靠性的要求也越来越高。那么就需要有更简单方便的方法来解决这类实际问题。

例如在电镀线行车的控制中,以前是把行车上的接近开关、按钮、限位开关直接连到PLC的输入端,行车拖带着很多导线,各种干扰使行车无法正常运行,按照传统的方法,采用电阻电容进行滤波,其效果并不显著,而且还影响了响应的时间。使行车定位不准,对偶尔出现的大的干扰信号无法过滤掉。由于行车拖带的导线长(可达100多m)而多,长时间很容易使导线折断,更换导线也非常困难,而且还产生干扰信号。这些现实问题的存在,必须进行深入探讨,寻找出有效的解决方案。

针对上述工业现场的各种干扰问题、大量复杂的配线带来的一系列问题,以及过滤器的失灵等实际问题,研制开发了远程IO信号采集器(本文简称采集器)。

2 采集器的系统组成和工作原理

所谓采集器是将输入口的位信号以数字形式通过现场总线传递给输出口的一种装置。采集器也是一种形式的总线,它有更好的实时性,而且简单方便。

2.1 系统的组成

采集器系统的组成框图见图1。

通过采集器将现场信号传递给PLC,既保证了集中控制,又保证了长距离信号传输的可靠性。采集器最多可代3个扩展,可传送64位。

采集器设有主机和扩展单元。

主机有3种型号:M01-OC 16点继电器输出,M01-OD 16点晶体管输出,M01-ID 16点晶体管双向输入bilateral。

扩展3种型号:E01-OD 16点晶体管输出,E01-OC 16点继电器输出,E01-ID 16点晶体管双向输入。

其中M01-OC 16点继电器输出主机,可以和16点输入的任意一款集线器相配合。也可单独做为总线式远程IO。M01-OC 16点继电器输出主机,可以和16点输入的任意一款集线器相配合。也可单独做为总线式远程IO。

2.2 工作原理

远程IO信号采集器是采用RS485总线的方式进行通讯,标准帧格式和CRC校验。波特率采用115.2 kb/s。一组采集器最多可传送64位,采集器如果在100 ms内没有进行有效应答则会将所有输出口置零,利用这个特点可对采集器的工作情况进行监视,使上位机做出相应的保护措施。

3 采集器的功能特点

1)点对点的通讯方式,提高了系统运行的可靠性。网络控制存在着单点故障容易扩散的问题,进而造成整个网络系统瘫痪的弊端,采集器采用了点对点的通讯方式,能够有效地克服单点故障殃及周围的问题,使系统运行更加安全可靠。

2)使用方便,便于安装。无须用户做任何编程工作,只需将采集器当作接线端子即可。使用方便,易于安装和掌握。

3)速度快,可靠性高,实时性好。采集器是采用专线专用方式配线,无站号分配。所以速度快,可靠性高,实时性好,安全性高。

4)接线简单、成本低。采集器仅用2根导线就可以取代原有的远距离的诸多繁杂接线,既降低了安装成本、又减少了安装工期,使安装接线更加容易,降低了故障率。

5)监视功能强、维修方便。每组采集器的状态都有相应的指示灯,运行状态一目了然,具有监视功能强、便于故障诊断、维修极为方便的特点。

6)配置灵活,通用性强。根据生产要求,选择的系统配置各不相同,然而,采集器能够和任何一种PLC配合使用,可以灵活配置,具有通用性强的特点。

7)抗干扰能力强。采集器采用了差分输入方式,工业信号实现现场采集数字传送时,采集器能有效地防止信号在传输过程中受到的各种干扰,具有较强的抗干扰能力。

8)取代了原来的过滤器,节省了大量的导线,减少了干扰信号,提高了抗干扰能力。

4 效果验证

以采集器在电镀生产线上的应用为例。电镀生产线上通常有2个至5个行车运行,其中一台行车的控制大约需要6个接近开关、5个限位开关等控制元件,控制线和电机的驱动线共用16棵线走在同一个扁平电缆内,电缆长度约100余m,对2个以上行车的控制就需要几十个开关控制,控制线和电机驱动线就更多,诸多的电缆线在系统运行时必然产生一定的电磁干扰。另一方面,行车的行走是采用变频器来控制的,变频器是将固定频率的交流电变换为频率连续可调的交流电的装置[3],当变频调速系统的容量足够大时,所产生的高频信号将足以对周围各种电子设备的工作形成干扰,影响周围设备正常工作,为了避免控制信号、变频器等带来的各种干扰,传统的方法是采用PLC现场信号过滤器来抑制干扰,现场信号过滤器主要是阻容吸收电路,电容小了过滤效果不好,电容太大又会影响响应时间,并且电网的波动有时也会造成过滤器失灵,使得行车常常发生定位不准,误动作等故障,严重影响了生产效率和产品质量。

电镀线对行车的基本要求是:行走速度快,定位准确,行走时平稳性能好。

采用远程IO信号采集器取代现场信号过滤器后,充分体现了其优越性:

1)由于采集器是采用点对点的通讯方式,所以具有更好的速度性和可靠性。有效地解决了变频器对控制信号的干扰问题,消除了误动作,提高了系统运行的可靠性;

2)用传统的现场信号过滤器时,行车计位用接近开关的检测距离是20 mm,采用采集器时,行车计位用接近开关的检测距离是10 mm,检测距离提高了一倍,从而提高了器件的响应时间,大大提高了行车的运行速度和行车的定位精度,解决了现场信号过滤器响应时间慢使定位不准确的问题;

3)取代了原来的现场信号过滤器,增强了抗干扰能力,还将原来的几十根导线减少为2根线,大大减少了导线用量,进而减少了由于导线折断等因素而引起的故障,既降低了成本,又提高了生产效率和系统运行的可靠性;

4)采用采集器配线少,安装简单,减少了安装周期;

5)采集器上具有相应的状态指示灯,使运行状态一目了然,便于故障诊断,给维修带来了极大的方便。

行车控制的原理图见图2。

系统的开关量接在采集器主机的输入单元,主机的输入单元安装在现场,主机的输出单元安装在控制柜里,取代了原来的过滤器,也取消了原来在现场和控制柜之间连接的大量导线,输入单元与输出单元之间只需两屏蔽线,大大减少了导线的根数。使接线和维护变得极为简单。经过1 a多现场使用证明,其可靠性大大高于原来的方法,1 a多来,行车运行稳定,从未出现过现场信号干扰等因素带来的错误动作。

5 结论

通过生产实际的验证,应用采集器能够有效地抑制复杂工业现场中的各种干扰信号,实现了系统的安全稳定运行,克服了网络控制单点故障容易扩散的弊端,解决了原来采用过滤器的不足,并且,对生产线的改造耗时少,费用低,安装接线简单,系统运行安全可靠,故障显示一目了然,维修方便,给用户带来了极大的方便和良好的效益。

摘要:针对工业现场中各种干扰信号对生产的严重影响和工程安装中的接线复杂问题,研制开发了远程IO数据采集器,通过大量的试验证明,远程IO数据采集器能有效地抑制现场的信号干扰,由于采用了点对点的通讯方式,使系统运行具有良好的可靠性和实时性。并且仅用两根导线就能取代原有的繁杂接线问题,使安装变得简单方便。

关键词:抗干扰,远程,点对点

参考文献

[1]刘高鏁.单片机实用技术[M].北京:清华大学出版社,2004.

[2]陶权.探析自动化控制系统的抗干扰设计[J].制造业自动化,2012,34(2):132-134.

如何学习iOS开发 篇5

由于iphone手机带来的手机应用狂潮,现在很多人都希望从事这块的开发。很多初学者可能会问,怎么样才能学好iOS开发,我们要看什么书呢,还是什么视频,其实这些都不是重要的,重要的是,你认为自己可以学好iOS开发,认为自己可以坚持下来,这是关键啦。

其实学很多语言都是通的,从C语言入门,因为IOS开发用的是OC语言,是在C基础上的,不过也跟C不是很搭界,你可以直接学习OC语言也可以,还有开发工具是用Xcode,是在Mac系统的,你多摸索一下就可以开发简单的应用了,建议你买一本iphone开发秘籍第二版看看。学语言,无非就是要学好基础,弄清楚概念,然后做个简单的例子,慢慢的体会,基础打好了,到后面你会觉得突然自己提高了很多,很多东西都自然而然地明白了,在黑暗中的努力是为了迎接光明。

我觉得学iOS开发,首先心态要好,不要想着我已经学习很长时间了,可以找个好工作,可以赚钱了,牛人除外,不过大多都是普通人。

先慢慢培养兴趣下定决心,然后开始找资料,找视频,查百度。等你觉得这些基础的都差不多理解了,那就别看书,将精力集中于界面开发、一定的数据库开发、通讯接口开发、协同开发与联调。然后自己设计个东西,可以涵盖他们的,做个自己想做的东西出来,虽然可能很难,但是你会在过程中学到很多,是别人教不会你的。

在学习过程中遇到什么问题,你可以百度一下看看别人的回答,看多了印象就深了,也就慢慢掌握了。遇到什么思路上的问题,可以来论坛发帖,论坛肯定会有人来帮忙的,就算不能完全解决,也可以提供点参考。学习要会利用资源,论坛上那么好的资源不用可惜的哦,还有资料堆的东西,只要你能掌握70%,不相信你试试。

等学完了UI后,可以想想搞点数据的存储的东西,比如做个网络图片收集的,里面涉及到网络连接,图片保存,UI线程安全,数据库操作等等,又可以学到好多,何乐而不为呢。等学完这些,已经算不错了,接下去就要做点大的项目,最好是有客户端和服务器的,也练习下数据操作,了解下http协议,了解下wifi,了解下电话短信googlemap的等知识。如果是游戏,那么还需要涉及到引擎、建模、素材、光影、故事板等。推荐两本书两本经典入门书籍《objective-c基础教程》和《iphone4和ipad开发基础教程》。

当然你有兴趣的话可以在中间看看iOS的源码。

最后,等上层应用的东西基本学完了,学点底层的,你就做点调用底层的东西,深入了解下,就可以做很多东西了,比如3D游戏性能提高,编码解码等等。

还有一种快速地进行iOS开发,那就是通过互联网上面的在线移动开发平台,即使不懂技术也能开发,比如通过应用之星平台(appstar.com.cn)。不过今后如果真的想从事android开发这一行的,还是建议你们下定决心安心学习这么技术。如果只是暂时有这门兴趣,创意很多,那么可以试试互联网上的在线移动应用开发平台,因为操作都是傻瓜式的,这样会给你剩了很多时间,也不会让你学习的特别苦恼。

以上的经验希望大家参考下,主要是你觉得适合的,可以去试试,当然你可能有比我更好的方法,每个人都不同的嘛,但是都希望你们能成为高手。我觉得做好开发更重要的还是得靠自己不断的努力学习,师傅领进门学艺靠个人 相信自己,努力学习,一定会成功的。

iOS生活工具推荐 篇6

惬意学习

《即视即译即搜寻》Worldictionary

当我们在看纸质读物时,遇到了不懂的外文词汇,大家第一时间会想到在手机上使用翻译软件,输入词汇,然后获取翻译信息。这是不是有点略麻烦了呢?那就用《即视即译即搜寻》吧,不用再做任何输入动作了,只需启动软件,然后用摄像头对准不懂的词汇就OK。当然,Worldictionary的作用还不只这些,它不仅单词量丰富,能在数秒内把9种语言翻译成另外50种语言,同时还能轻松识别大街上的标语、饭馆里的菜单、大街上的路牌等等。即便大家到了国外,也不用愁了。

《口语这些就够了》Everyday English

背语法、记单词什么的真是弱爆了,它只能创造出哑巴英语学习者。英语最重要的是要开口说,大胆地说,但如果是入门级学习者又该怎么办呢?没关系,最新的《口语这些就够了》刚刚出了Beginner入门版。其中包括了寒暄、礼节、天气、问路、工作等各种情景下的基础用语,全部采用标准的美式发音。这对于广大初级学习者来说尤为实用。英语基础差没关系,咱们大不了从新开始学,天天看上几段,跟着说两句,循序渐进,不愁英语学不好,等到初级学完之后,咱们再换高级的。

精彩饮食《下厨房菜谱》

做饭是件麻烦事,但烧得一手好菜绝对能够轻松讨好自己的另一半。《下厨房菜谱》里拥有上万道美食菜谱供大家参考。同时也有众多网友分享自己的烹调经验,主流菜要是觉得没什么心意,那就来看看网友的秘制私房菜吧。《下厨房菜谱》不仅教大家如何制作,同时还非常人性化地设置了购买清单,用户还能上传亲手制作的菜肴的图片供大家参考。为了讨好女友,为了老婆孩子,大家加油吧。记得要把自己的成果上传分享喔。

身心健康《30天减肥》

iOS开发 篇7

关键词:IOS,移动应用开发,新闻APP,信息推送

1 系统功能分析与设计

本应用具有新闻功能模块, 顶端有大图推荐新闻模块, 具有自动滚动功能, 支持上下滑动功能、实现下拉更新最新新闻, 主页推送最新16条新闻, 根据用户需求实现新闻管理推送, 同时上方还有热门文章的推送, 界面操作同上, 为用户节省流量, 完善客户体验。

本应用的功能模块图如图1所示。

具体描述如下:

(1) 系统服务端设计

服务端主要使用的是第三方的服务器, 在服务器端, 配置上的只要给定相关服务器的IP地址, 通过解析相关地址找到相应服务器。

(2) 系统客户端 (IOS) 设计

本客户端采用MVC设计模式, 耦合性低、重用性高、生命周期成本低、部署快、可维护性高和有利软件工程化管理。其中网络部分, 图片下载以及刷新都采用第三方开源项目。其中“首页”、“电台”、“发现”和“设置”部分采用UITab Bar&&UITab Bar Item控件进行切换;各个页面内容的展示采用UItableview控件。图片的循环播放主要用的控件是UIScroll View的content Offset属性和UIPage Control的current Page属性, content Offset主要用于展示图片, current Page则展示当前图片为第几张;然后设定一个定时器, 时间间隔为2s, 通过每次设置content Offset和current Page依次循环展示。数据的保存采用i OS自带的sqlite数据库, 所有数据从服务器获取后按一定分类, 保存在数据库中。

2 系统实现

系统设计的基类描述如下:

Image IO.framework:该框架的接口可用于导入或导出图像数据及图像元数据。

CFNetwork.framework:该框架的接口用于提供网络服务, 如AFNetworking

Foundation.framework:基础框架 (Foundation.framework) 。

Security.framework:安全框架 (Security Framework) i Phone OS除了内置的安全特性外, 还提供了外部安全框架 (Security.framework) , 从而确保应用数据的安全性。

Mobile Core Services.framework:该框架的接口可用于定义统一类型标识符 (UTIs) 使用的底层类型。

System Configuration.framework:该框架的接口可用于确定设备的网络配置。

Address Book.framework:电话本框架 (Address Book.framework) 提供了保存在手机设备中的电话本编程接口。

应用首次安装之后进入欢迎页面, 之后进入到新闻主页, 点击上排今日看点和热门文章按钮, 可以切换新闻和文章的推送列表, 大图新闻通过左右滑动查看, 可以通过滑动打开新闻界面和文章界面。其运行效果如图2所示。

4 结论

本应用开发成功后给不同的使用者提供了新闻信息查询的便利, 也改善了用户对新闻媒体和多媒体的使用认知, 让应用与理论、新闻与娱乐进行了有机的结合, 是一款有实际意义的应用。

参考文献

[1]田丹, 吴晓艳.Coffee文化宣传网的设计[J].民营科技, 2016 (6) .

iOS开发 篇8

安保行业近年来发展迅速,各类信息化技术不断在安保行业中获得广泛应用。当前,随着智能手机与智能平板的广泛应用,为其开发专用的安保调度项目成为关注的焦点。有针对性的开发群组对讲、语音电话、我的位置、打卡考核和培训学习等模块。

在该项目中,通过群组对讲和语音电话及时和其他调度人员进行及时交流交换信息。从我的地图模块可以清晰地看见其他调度人员的位置,可以及时性的安就近原则调度安保人员,达到及时性和可靠性,避免不必要的人力资源浪费。通过培训学习模块考核并提高每位安保人员的服务意识和安全意识,熟练掌握各项安全业务技能,加强安保人员的综合素质,才能更好地为服务于安保行业。打卡考核模块可以上传工作日志包括现场图片,更加拓宽日常考勤的管理。

2 系统模块设计

苹果手机移动端软件的开发环境主要有两大方面,即硬件环境和软件环境两大类。硬件环境:本文使用mac book、i OS设备若干台,软件环境:本文采用Mac OS 10.09系统、Xcode7.0版本。需要i OS设备若干台是为了在测试时,检查软件在不同的系统版本和分辨率的客户端下是否存在兼容性的问题,对于适配,系统的API比较麻烦,一般使用Masonry[1]。项目釆用苹果的开发工具Xcode及Objective-C作为主要的开发语言。

2.1 主界面介绍

在进入安保调度的主界面是给使用者的第一印象,页面的美化度、是否存在明显BUG、操作是否流畅不卡顿、用户是否操作别扭等因素都能直接影响了用户对这个应用的喜欢。

点击客户端,打幵的是新手引导页,新手引导页的主要作用是介绍本软件的特点,用图文并茂的方式介绍本软件特色。包括实时对讲、移动打卡、组织架构、学习培训。实时对讲随时随地了解安保团队信息、单呼组呼、呼叫调度台、创建组群。移动打卡保障安保人员出勤到岗,含有考情统计,签到记录。组织架构提高员工效率,释放组织潜能,设有分级管理、角色管理和权限管理。学习培训审核和提高安保人员专业技能。

登录页面设计简洁清爽,登陆主要有手机号和验证码组成,因此键盘设置默认只有数字键盘,避免不必要的错误输入,其次让客户端更加简洁。登陆时会有加载提示,让用户更加清晰了解登录状态。

第一次登陆默认首界面是安保对讲界面,进入主界面使用苹果官方的reachability这个类检测网络状态,可以区分移动端是否联网,并且区分出是否是手机网络还是wifi网络。界面主要采用DDMenu抽屉式菜单。点击导航栏左侧按钮可查看菜单模块。菜单模块主要采用表格形式和图文并茂的方式展现此款软件的主要功能。功能列表主要包括:组织架构、安保对讲、企业群组、信息资讯、交流中心、学习培训、我的位置、考勤管理、系统设置、我的中心。

2.2 我的位置模块

位置模块也是安保调度的重要模块,此模块搭建百度地图SDK,点击进入可显示我的当前位置和同时在线的其他安保人员,并具有更随功能,即移动端位置更新,地图上的大头针也随之改变,大头针采用头像和姓名组合简单明了。同时点击大头针可动画弹出表格菜单具有呼叫、发送信息和查看轨迹功能。

此模块具有查看轨迹功能,在启动软件的同时已开启分线程和定时器每三秒获取当前地理位置,并和上次地理位置信息的经纬度进行比较筛选,如果相差不大则筛除不进行上传,避免不必要的流量浪费和大数据量的信息存储。筛选的操作可以简易的和上次的经纬度比较在去除末两位的情况下的字符串是否相同。依次比较,但是若第一次数据就出现偏移那么后面的数据比较都会出现错误。所以必须确保第一次上传的经纬度的准确性,一般开始的位置信息不进行上传,而是在比较是否在合理的范围内,再上传后续的位置信息。

查看轨迹功能也具有查看他人轨迹信息,但是这是由权限限制。不同的角色具有不同的权限,但是本人是可以查看自己的所有历史轨迹,点击导航栏右侧按钮,并选择对应日期,就可以查看,但是由于是数据量达到上千甚至上万时,CPU对于数据处理也是有限的,耗用CPU非常大会卡死主线程,此时就需开辟分线程进行绘制轨迹。在采用add Overlay进行绘制前同样对数据进行筛选,采用百度地图API提供的空间关系判断提供相应的接口,判断点与圆的位置关系。比较一个点是否在内一个点的范围内,根据三秒时间内这点与另一点的空间距离是否合理来进行偏移点筛选。

2.3 安保对讲模块

音频数据的编码是在原始数据基础上进行编码,编码后的大小必须是20字节才能和安卓客户端大道互通的效果。通过HTTP请求将压缩后的音频数据发送到服务器。同理通过回调函数得到服务器返回的音频数据,同样设置和录音相同的参数设置并进行解码,通过队列源源不断播放直到结束。在播放前必须设置好默认播放输出端,是扬声器或者是听筒。本文设置默认是扬声器播放音频。在p2p语音电话通信状态下开启传感器功能。为了减轻长期点亮屏幕引起的电量消耗和屏幕误触。使用接近传感器首先要启用接近传感设置,注册针对传感器状态发生变化的通知。当遮挡传感器时就可达到扬声器和听筒进行切换。

对于不希望启动接近传感器功能的使用者,如果需要进行扬声器和听筒进行切换过程中,则必须通过启用接近传感器来进行声音输出模式的切换,与此同时,则必须注意,如果当声音通过听筒进行播放完毕时,此时仍在听筒模式输出,如果此时关闭传感器功能,则导致在离开听筒时,由于传感器功能已经关闭,应用无法再次收到注册的传感器变更通知,而此时如果未能将底层的声音输出模式切换,则导致相关的声音输出仍从听筒中输出,即使引起传感器反映的障碍已经离开传感器作用范围,但应用中获取的传感器状态仍未接近状态,使根据传感器状态进行切换声音输出模式操作失效。

3 语音模块技术开发

3.1 录音模块的数据结构

采用音频队列录音需要三个要素:音频队列(Audio queues)、队列缓冲区(Audio queue buffers)和回调函数(callback functions),音频队列既可以是录制音频也可以是播放音频的对象。数据类型采用Audio Queue Ref来描述,它在Audio Toolbox.framework框架中的Audio Queue.h头文件中声明。音频队列包含以下数据结构:音频队列缓冲区数组(audio queue buffers),数组中的每个缓冲区都是用来存储临时的音频数据。缓冲区队列(buffer queue),队列中包含着audio queue buffers并且将它们有序的排列。最后调用回调函数获取音频数据解码后放到队列中按序播放[2]。

3.2 Audio Queue的工作模式

Audio Queue内部存在一套缓冲队列(Buffer Queue)机制。在启动Audio Queue之后通过Audio Queue Allocate Buffer生成若干个Audio Queue Buffer Ref缓存结构,这些生成的Buffer可以用来存储回调的将要播放的音频数据,而且这些Buffer受生成它们的Audio Queue实例对象管理,此时内存也已经被分配成功,当Audio Queue被Dispose时这些Buffer缓冲区也会随之被销毁。

当有音频数据需要播放时会被memcpy到Audio Queue Buf⁃fer Ref的m Audio Data中(m Audio Data所指向的内存也已经被分配好,之前Audio Queue Allocate Buffer所做的工作),并给m Au⁃dio Data Byte Size赋值传入的数据大小。然后调用Audio⁃Queue Enqueue Buffer把存储的音频数据的Buffer放入到Audio⁃Queue内置的Buffer队列之中。当队列中存在buffer的情况下可以调用Audio Queue Start,此时Audio Queue就会按照Enqueue顺序依次使用队列中的buffer进行播放,每当前一个Buffer使用完毕之后数据就会从Buffer队列中被移除并且会触发一个回调来通知使用者,某个Audio Queue Buffer Ref已经使用完毕[3],此时可以继续重用这个对象来存储后续回调的音频数据。按此循环操作音频数据就会被逐个播放直到结束。

3.3 录音初始化设置

录制音频队列是以移动端的麦克风作为录音功能音频队列的音频输入端,按住录音按钮或者p2p通信时输入端就会不断地将音频数据传放置到缓冲队列中,此时再通过回调函数将缓冲块的数据传出再做的处理,而已被读取数据的缓冲区就会再次被放到队列的尾端再次循环使用,因为音频队列具有循环引用的功效。将音频原始数据进行编码发送,通过回调函数获取编码音频数据进行播放,便可达到循环功效。

缓冲区的个数设置也是至关重要的,并非越多越好,如果数量过多则会造成播放延迟,反之有些音频数据可能来不及播放,由于i OS设备的内存容量不多,经反复测试最终设置为3个缓冲区较为合适。

在录音初始化前,必须进行相关参数设置,创建好缓冲区。音频数据流的采样帧数,本文釆用8000Hz,本文采用单声道,所以值取1,声道包含的采样率的值取16bit[4]。主要有这三个参数决定音频流的采样,其他参数可由此计算得来。

3.4 集成speex库

Speex压缩库给语音编码提供了快速有效帮助,它适用于多种平台,可以在多个平台达到互通的效果。它不仅提供了语音的编解码功能,而且在还提供了声音降噪和声学回声消除功能,给语音通信提供了更高的技术支持。Speex支持多种比特率而且。speex在各个平台上的运行做的非常好,使用和安卓对应版本的speex编解码库,就可以很好的在两平台互用,i OS移动端可以使用Speex库,可以在speex官网下载或者在github查找相应版本的静态库或framework框架[5]。

3.5 音频流数据编解码实现

3.5.1 编码流程

在进行对音频数据流进行编码需要采用Speex的API函数进行如下步骤:

1)自定义一个Speex Bits类型的变量bits和一个Speex编码状态的变量enc_state。

2)然后调用speex_bits_init(&bits)函数初始化bits。

3)接着调用speex_encoder_init(&speex_nb_mode)函数来初始化enc_state。其中speex_nb_mode表示的是窄带模式。spe⁃ex_wb_mode表示宽带模式、speex_uwb_mode表示超宽带模式。

4)调用函数int speex_encoder_ctl来设置编码器参数,state参数表示编码器的状态;request参数表示需要定义的参数类型。

5)初始化设置完毕后,再对每一帧声音作如下处理:调用函数speex_bits_reset(&bits)再次设定Speex Bits,然后调用函数speex_encode(enc_state,input_frame,&bits)[6],参数bits中即存储着编码后的数据流,在此处便可以获取并作处理。

6)若编码结束,便可进行摧毁。

3.5.2 解码流程

同理,对从服务器回调的已经编码过的音频数据进行解码需要经过以下步骤:

1)首先自定义一个Speex Bits类型变量bits和一个Speex编码状态变量enc_state。

2)需调用speex_bits_init(&bits)来初始化bits。

3)调用speex_decoder_init(&speex_nb_mode)来初始化enc_state对象。

4)调用speex_decoder_ctl函数来设定编码参数。

5)调用speex_decode函数对bits中的音频数据进行解编码,参数out中便是保存解码后的数据流,然后进行放置到音频队列中进行播放。

6)最后调用函数关闭或销毁Speex Bits和解码器。

4 结束语

本文主要介绍了关于整个安保调度项目的相关模块和主要技术要点分析,安保工作对于社会所产生的价值也是无形的,对于每个都是有利也是无法衡量的。所以此款软件对于服务于安保人员,更好地确保社会安全,这也是我们共同的理想。

摘要:随着社会的不断发展变化,对现代安保行业的要求也在不断提高,为适应现代安保业通信需求,提高安保人员的工作效率,开发设计一套功能强大、性价比高的ios客户端是非常必要的,基于通信技术,百度地图SDK,Speex语音编解码库等技术,可以实现点对点、组呼、对讲等多种呼叫功能。控制中心可采用语音调度系统,可实现安保人员的及时调度等功能。软件设计以用户体验为核心,结合项目需求和系统特点,采用MVC的框架结构搭建,并借鉴DDMenu侧滑菜单的使用,让此款软件体验更加简洁,便于用户操作。

关键词:ios系统,安保调度项目,软件开发

参考文献

[1]Matt Drance,Paul Wanen.i OS应用开发攻略[M].北京:人民邮电出版社,2012.

[2]Paul Deitel.i Phone应用程序开发名家解析[M].北京:电子工业出版社,2010.

[3]Aaron Hillegass著.苹果开发之Cocoa编程[M].北京:电子工业出版社,2009.

[4]赵淼.基于Telematics的i Phone手机客户端系统的研究及应用[D].长春:吉林大学,2014.

[5]张立文,吴迪,宋占伟.基于Speex的嵌入式无线数字音频交互系统[J].吉林大学学报:信息科学版,2013,31(4):353-358.

iOS开发 篇9

1 IOS平台客户端应用开发的环境及架构分析

1.1 IOS平台客户端应用开发的环境及架构分析

处在当前的全面改革深化阶段, 我国的各个领域的发展都进入到新的局面, 在移动设备操作系统领域的发展过程中, i OS平台系统自身所具有的优势也使其在应用领域比较广泛。对于i OS平台I客户端的应用开发环境和构架层面来说, 这也是集成度最高的, 只要进行系在安装Xcode软件就能将开发环境得以相应建立, 在包含的内容类型层面比较多样, 主要有编译环境以及模拟器的性能测试工具等等。另外这一搭建的环境能够随着系统升级而进行发布新的版本并向下兼容。在这一客户端应用开发的框架层面主要就是MVC框架, 其主要的优势就是在可维护性以及低耦合和可扩展性层面有着显著体现。结合功能的不同还能够进行分成多个模块。

1.2 IOS多线程技术分析

对于多线程这是成熟APP当中不可或缺的一项技术, 如果是将所有的操作都在一个线程当中进行运算, 就必然会对界面的响应造成很大的干扰, 并且对操作的程序也会造成很大的影响。对于i OS多线程技术主要有几种, 其中在NSObject的perform Selector In Background:with Object:方法层面, 其是多数类的父类, 并封装了简单方便的多线程方法, 在这一技术方法上能够将线程的内容作为函数写在类中。还有就是NSOperation类, 这是经过封装的多线程抽象类, 通过这一方法就能够在接口上多样化呈现, 从而来对线程的运行得以有效控制, 这一方法的应用相对比较广泛。无论是采用哪一技术方法都绕不开Run Loop这一要素, 其作为线程中比较重要的构成部分在计时器以及监听网络请求反馈层面有着比较广泛的应用。

另外, 对于Comet技术而言, 其主要是在Web当中进行应用的推送技术, 其能有效利用无状态HTTP请求模拟双向通信, 这样就能够使得服务器可实时将更新信息传送到客户端, 对频繁的查询请求就能有效避免。对这一技术进行实现主要是通过长轮询以及iframe流的方式完成的。

2 i OS平台客户端应用开发技术点以及规范化实施

2.1 i OS平台客户端应用开发技术点分析

对于i OS平台客户端应用开发技术点在软件的开发类型上是多样化的, 并且在开发的实际环境也会存在着很大不同, 从表格视图使用方法层面来看, 表格能够提供基于滚动列表的交互类, 对小型设备是较为适合的。对于标准化的i Phone表格主要是通过简单化有着多单元格的滚动列表所构成, 作用就是能有效提供可操作数据索引, 这样就比较方便用户对交互条目的找寻。从数据源的方法层面来看, 对表格的显示需要每个表格都要能有三个核心方法。

重用单元格层面在节省内存能为每个单元格制定一个标示符, 对于不相同的单元格要能够采用不同的ID。对于制定数据源内容上这一外部源成为数据源就表示着负责表格的查询返回到了单元格内容的对象,

另外, 对于应用程序的优化过程中, 主要就是通过设置断点以及单步执行代码的方式, 从具体的操作过程中首先要对XCODE中的断点按钮进行单击, 然后对菜单中的Run—Debug进行选择, 在这一操作过程中要注意程序启动以及对空视图的显示, Breakpoints就对调试器的程序执行暂停加以告知, 然后就会出现剪头表示断点, 在断点被禁用的时候调试器对其忽略。可将其拖出Xcode gutter的区域, 这样就能使得Breakpoints消失。

2.2 IOS平台客户端应用开发规范化实施

对i OS平台客户端应用开发过程中要能够结合实际的内容进行规范化处理, 开发中要能分成两条线路, 首先可通过交互逻辑进行实现, 这样就能够有效实现用户对主界面的观看, 在诸多应用中能见到的页面。这一页面就涵盖着页面的入口, 在顶部的导航栏返回按钮能够实现二级页面出栈以及一级页面间的逻辑关系。通过对这一系统的应用来提供新的方法, 如下所示:

[self.navigatioe Controlleer.navigaition Baree t Backgroend Image:iamge_fi xfor Bar Metrics:UIBa r Metrics Default];

以上方法中的iamge_fi x主要就是指图片变量, 针对有关兼容性的问题就要采取相应的方法进行有效解决。要能够对低版本系统运行过程中将产品功能得以实现, 而在高版本的方法层面也要能够得以有效实现。然后需要按照交互逻辑对递进后续的页面得以实现。除此之外就是要能够依照着核心的功能加以实现, 在诸多的功能点基础上就能有效对前期UI独立实现得以脱离, 并能够高效的整合到主体代码当中。

3 结语

总而言之, 对当前的操作系统的不断升级优化背景下, 要能够对客户端的应用开发得以充分重视。智能终端在当前的广泛应用, 已经在人们的生活中各个层面得到了作用发挥, 随着硬件性能的要求提升以及网络环境的不断升级, 对于终端应用的要求也随之而得到了有效提升。加强对i OS平台客户端应用开发的理论研究就更为重要, 此次主要就i OS平台客户端的开发环境以及结构和技术点进行了分析, 希望能够对实际的应用开发提供一点思路。

参考文献

[1]王海南, 邵国强, 介龙梅.基于iOS平台塔防游戏的设计与实现[J].软件工程师, 2014 (06) .

[2]周建亮, 朱晓民.基于iOS平台智能点餐系统的设计与实现[J].软件, 2015 (01) .

iOS开发 篇10

关键词:iOS应用开发,微课教学,项目教学,辅助教学手段

0 引言

美国新墨西哥州的David Penrose在2008年正式提出了60秒课程的概念,相对于学校中普通一节45分钟或50分钟的课程,微课(Micro-Lecture)指课程长度只有几分钟,以讲明单一知识点为目的的短视频课程[1]。借助于互联网的普及,学生可以利用碎片化时间,完成知识的预习、复习或进行独立自主学习,微课的灵活性使其在移动学习和在线学习中获得了广泛应用。

微课创始人David Penrose认为,只要微课程有相应的作业和讨论配合,一定可以取得与传统长时间授课相同的效果。与此同时,对于学生而言,微课中布置的讨论课题,需要查阅许多资料,可培养其自主学习的能力,从而把学习的主动权交给学生;不同形式的课堂讨论,使学生在课堂上有了更多表达、交流的机会,不仅提高了学生间沟通协作的能力,而且改变了传统教学课堂中授课老师唱“独角戏”的状况,学生成为课堂教学的主体,提高了教学效率[2]。

1《iOS应用开发》课程教学现状

随着苹果公司的iPhone、iPad等移动设备在中国市场的占有率逐步提高,人们对于iPhone的定义已不仅仅是电话,对iPad的使用也不仅局限于看电影或浏览新闻,大多数人每天的生活已离不开各种各样的移动应用。由于每天都有各种新的移动需求需要实现,移动应用开发无疑在目前和未来几年内都有较好的就业前景。因此,面向有着良好计算机基础的学生开设《iOS应用开发》课程,可以让学生接触到最新的移动开发技术,提高学生在就业中的竞争力[3]。

《iOS应用开发》课程主要涉及Objective-C或Swift语言基础、视图编程、网络编程、数据库访问等,仅其中的一个视图编程就有数十种不同类型的控件,即使作为一名计算机专业的学生,有着良好的面向对象编程基础及实践经验(已熟练掌握Java或C++),学习该课程也有较大难度。作为一门选修课,安排课时较少、知识点多是课程教学过程面临的最大困难[4]。作为一门实践性非常强的课程,还需要利用一部分教学课时进行上机编程练习。因此,引入微课教学,充分利用学生的课余时间是解决课时少而知识点多矛盾的一种较好途径。

2 iOS学习资源及现存问题

随着苹果产品的热销,就业市场iOS开发人才的稀缺,各种移动教学平台上出现了许多视频教学资源。很多从业者在学习、开发实践中在各种社区论坛发表了大量笔记,这些资料给初学者提供了很大帮助。但是经过甄别,发现这些视频资源中,大部分资料是教育培训公司提供的示例教学视频。授课者大多数曾经在一线从事过iOS开发,但是教学水平参差不齐。教学过程中的常见问题主要包括:

(1)局限于知识点罗列,力求“大而全”。例如,Xcode是iOS开发的工具,《Xcode的使用》一般放在第二次讲授。在苹果电脑的《操作系统OS X使用》讲解完之后,有些老师将Xcode的所有菜单及子菜单功能都描述了一遍。实际上对于初学者而言,刚开始学习开发iOS应用所涉及的菜单仅为“文件/新建/项目”(File/New/Project)以及构建运行(Build and Run),只需学会打开/关闭“调试区域”、“资源管理器”、“工程代码编辑区”、“属性面板区”以及“调试输出”5个区域即可[5]。

(2)未考虑到教学内容和方式是否能够被初学者接受。主故事板(Main.Storybord)可以在一个窗口中形象地显示整个App涉及的界面,对于初学者而言,可省去创建对象、安排对象位置、设置对象属性等抽象的代码写作,降低了学习难度。由于授课者都有一定的iOS开发经历,很多教学视频中的老师在课程开始后不久,就开始采用代码实现UI控件,本来鼠标拖一拖就可以实现的操作,采用代码实现给初学者留下了iOS开发很难的印象。

(3)知识点讲述缺乏综合性,疏于对知识点的梳理。iOS开发的基本技术是控件开发,常见控件有近20种,很少有老师总结它们之间的联系和分类,让学生能够对某类控件的开发举一反三[6]。与培训班数月的连续培训不同,大学里的课程授课时间总共只有大约一周(40~50课时),不可能详细讲述每个控件怎么使用。比如,讲表视图(UITableView)时,要联系选择器视图(UIPickerView),因为它们“列”的描述很类似(在表视图中是section,在选择器视图中是component),编程方式也类似(有数据源,且需要实现代理等)。但是也需指出它们之间编程的不同点,例如选中事件的相应方式、具体操作单元的定位方法等。

(4)由于苹果公司的技术更新很快,视频中展示的很多技术已经过时。每年苹果公司在全球开发者大会(WWDC)上都会推出一些新技术。在iOS具体开发时,可以看到很多视频中用到的类与方法都已不再使用,而新的类与方法编程思路与旧的不一致。

3 项目教学法与微课结合

作为一门实践性很强的课程,在教学时需要预防两个极端:大量枯燥的理论讲授,或者只介绍简单的操作。如果把时间放在讲授iOS设计原理,如消息的传递机制,这对初学者来说难以接受;如果仅教孤立的单个知识点操作,学生将只会简单重复教师的工作,稍作改变就会不知所措。

项目教学法起源于哈佛大学培养MBA时采用的教学方法[7],与传统教学中以教师为主体、知识点有序传授不同,项目教学法是在教师指导下,学生根据项目需求,自主学习项目中所需的相关知识,最终完成项目设计。项目教学法与微课教学过程有相通之处:课堂教学不是简单地向学生灌输知识,而是把学习的主动权交给学生。对教师的要求不仅没有降低,反而有所提高。教师不仅要求会讲,而且要会做。在项目教学法中,教师面临的第一个任务就是选择合适的项目,难度太大不行,会打击学生的学习积极性;太简单也不行,无法将教学知识点串联起来;项目需求过时也不行,学生将缺乏兴趣和学习积极性。

笔者在教学实践中采取的方法是:1带领学生进行项目需求分析,将一个综合应用App进行任务分解,分配到不同设计组;2教师确定哪些是设计难点,哪些是一般知识点。难点由教师录制相应视频,发布到微课平台供学生学习参考;而对于一般知识点,学生可以通过查阅相关资料进行学习,教师在微课平台上以PPT方式提供一些参考链接;3在课堂教学的大部分时间,设计组每个星期进行项目进度汇报,或讲授其他同学负责任务中的关键知识点。每个成员的表现作为期末成绩评定的主要依据。

4 结语

通过实践,在《iOS应用开发》课程中应用微课教学,使学生“被迫”利用课后时间主动学习,从而延伸了教学时间,提高了教学效率。同时,通过项目设计,提高了学生的工程实践能力与学习兴趣。

在教学实施过程中也遇到一些困难,主要包括:1只有少数同学拥有苹果电脑,实验条件不足,上课前唯一的实验室比较拥挤。除鼓励学生探索在自己的PC机器上安装Mac OS外,可以在校内搭建一个具有Mac OS操作系统的云平台,学生只需通过Web即可连接到Mac服务器,随时随地使用Mac操作系统进行开发练习,就像www.macincloud.com提供的服务一样;2每个项目涉及知识点不一样,侧重点不同,教师时间有限,不能将所有项目先做一遍,因此项目库中的内容还不够丰富。为了解决该问题,要求进行毕业设计的学生,在常规的毕业设计项目基础上,提供任务分解的详细报告,分解过的项目可以作为教学案例,从而减轻教师工作量;3由于不能做到每人一题,对组内成员的单独考核准确度不高,存在少数同学承担任务量不足的现象。而且对于很多需要自学的内容,如果学生缺乏主动学习意识,这部分知识将无法传递给学生[8]。

微课作为一个新的辅助教学手段,在应用实践过程中仍会存在不少困难,但总体而言对提高教学效率是有益的,值得在实践性较强的课程教学中进行推广应用。

参考文献

[1]焦建利.微课及其应用与影响[J].中小学信息技术教育,2013(4):13-14.

[2]胡铁生,周晓清.高校微课建设的现状分析与发展对策研究[J].现代教育技术,2014,24(2):5-13.

[3]牛丽,殷凡.校企深度融合的创新创业型人才培养实践——以iOS移动开发人才培养为例[J].职业技术教育,2014,35(8):49-52.

[4]王勇,李程俊,吴杰.手机应用程序开发课程教学初探[J].计算机教育,2016(1):109-111.

[5]刘露.iOS 9带来的变化[J].百科知识,2015(15):26-27.

[6]龙马工作室.Swift从入门到精通[M].北京:人民邮电出版社,2015.

[7]卓敏,朱琴.项目教学法在本科专业课程教学中的应用研究[J].黄山学院学报,2015,17(1):90-94.

手游推荐榜iOS 篇11

提起解谜游戏,许多朋友首先想到的就是《密室逃脱》系列,其集推理、解谜、恐怖、未知等元素于一身,给玩家留下了极为深刻的印象。其实,好玩的解谜游戏并非只有《密室逃脱》,比如以下10款游戏,就相当不错。

推荐榜单

1、新娘连环被杀案

2、恐怖庄园的秘密

3、极速脱狱

4、入侵电脑

5、逻辑之力

6、车内逃脱系列

7、铁道迷宫

8、3D孔明锁

9、恐怖之眼

10、黑暗中的艾米丽

推荐理由

几名年轻新娘陆续惨遭毒手,从死亡状态与作案手法上判断,有极大可能系同一人所为,那么究竟谁是真凶呢?在悬疑破案游戏《新娘连环被杀案》中,我们将摇身一变为侦探,调查凶案现场,与关键人物面谈,搜集线索。我们必须从大量看似无聊的信息中找寻出蛛丝马迹,然后顺藤摸瓜,一举找出真凶。此游戏共有6个引人入胜的章节,推出了44个场景供玩家探索,其中更是包含了22款迷你解谜游戏。

与《新娘连环被杀案》相比,《恐怖庄园的秘密》这款游戏虽然没有血腥味,但却透露出未知的恐怖与诡异的气氛。主人公许久未曾联系的怪祖父突然寄来一个包裹,里边有一张神秘的庄园照片,并留下了一封信,让主人公前往庄园,解谜游戏由此拉开大幕。在神秘庄园内,会出现各种形式的谜题和线索,如果我们能破解这些谜题,将诸多线索串联起来,就能推动剧情的发展,最终揭开庄园神秘的面纱。游戏拥有精美的画面和独具特色的音效,楼梯的脚步声,开门的吱呀声,加上风格诡异的背景音乐,让玩家在感受到一丝恐惧的同时,又迫不及待地想要揭开最后的答案。

艾玛!有木有被前边的游戏吓着?让我们来点轻松搞笑的元素,协助一位含冤入狱的倒霉鬼越狱吧。《极速脱狱》是一款名副其实的解谜类游戏,主人公Jack含冤入狱,监狱里面戒备森严,没有任何逃生工具,还有非常凶悍的看守,但这一切都无法阻止Jack对自由的向往,他决定越狱。聪明的Jack制定了一个14天的计划,在这14天内他要画地图、制作铁锤、钻头、钻孔,还要钻穿厚厚的墙,而以上所有行为,都由玩家替Jack完成。实施计划的过程中,千万别被监狱看守察觉哦,否则,哼哼,你懂的……

如果你讨厌“越狱”这种粗重活,那不妨试试《入侵电脑》这类技术活!这款游戏的画面与落后的DOS界面十分相似,乍看上去,黑乎乎的一片,似乎没有丝毫玩点,但实际上,有趣的内容便藏在其中。游戏开始后,玩家会接到雇主的委托,运行黑客程序入侵指定目标的电脑,盗取各种机密文件。雇主会为我们提供一些重要信息,随着剧情的发展,我们还能获得各种线索;将信息与线索串联并筛选后,我们便能找出破译目标电脑的密码,顺利完成任务。

除了上述四款解谜游戏,本期推荐的其他游戏同样精彩。《逻辑之力》是一款考验玩家逻辑思维能力的益智游戏,我们必须通过计算与推演,将不同颜色的电极摆放到正确位置,从而使坏掉的发电机重新恢复工作。《车内逃脱》系列游戏的玩法与密室逃脱类似,不同的是游戏场景换到了狭窄的汽车内。《铁道迷宫》将安排火车运行轨道的重任交付给你,你需要开动脑筋把火车的起点和终点正确地连接起来,确保交通顺畅。《3D孔明锁》是一款类似民间益智玩具“孔明锁”的 3D 解谜游戏。《恐怖之眼》是一款第一人称视角的恐怖探险游戏,我们将探索一个古老、废旧的房子,并收集任何值钱的东西,传言这里时常有鬼魂出没……《黑暗中的艾米丽》讲述了一个被枪杀的小女孩艾米丽,在灵魂出窍后四处探险,为复活而努力的故事。

iOS开发 篇12

1 构建开发环境

一台高档笔记本电脑, 笔记本安装Windows 7 32位版本或64位版本;安装SQL server 2008网络数据库;安装Delphi XE7。Delphi XE7安装完成后, 将“C:Program FilesEmbarcaderoStudio15.0PAServerPAServer 15.0.pkg”文件复制到桌面备用。

在笔记本Windows 7环境下安装VMWARE workstation 10.0虚拟机版本, 在vmware下创建并安装MAC10.9操作系统;在MAC下安装XCODE 5.1;将Windows7桌面上的PAServer15.0.pkg文件复制到MAC环境下的共享文件夹下, 并在MAC环境下安装。这样就建立了Windows7和MAC的服务通道。

在Windows 7环境下运行Delphi XE7, 通过“TOOLS→OPTION→CONNECTION PROFILE MANAG-ER”建立OS X配置文件;通过“TOOLS→OPTION→SDK MANAGER”安装IOS SDK文件。

在MAC 10.9环境下, 运行一次XCODE, 并将之关闭;在MAC 10.9环境下, 运行PAServer15, 并将之最小化。

2 识别手势开发

在Delphi XE7中按照“File→New→firemonkey mobile application→blank application”连续单击, 然后单击OK按钮。

在窗口上拖放一个Tab Control控件, 在Tab Control下建立几个tabitem, 每个tabitem对应一个窗口。手指向左滑动时, 打开下一个窗口, 手指向右滑动时, 打开上一个窗口。在窗口中编写手势识别代码。

3 弹出式菜单开发

在一个新页面上拖放一个PANEL控件, 在PANEL上拖放一个listbox控件, 在listbox下建立几个listboxitem。当手指在屏幕空白处点击时, 自动打开或关闭弹出式菜单。在窗口的Mouse Down事件中编写下列代码。

4 发布到IP HONE模拟器

在DELPHI XE7下, 发布平台选择“IOS IPHONES-IMULATOR→TARGET→IPHONE”, 点击运行程序后, 运行结果会自动传送到MAC下。开发人员可以在MAC虚拟机下查看程序运行结果。

5 发布到实体机

在MAC10.9下找到钥匙串访问, 双击打开;击左上角钥匙串访问, 选择证书助理, 创建证书;填入证书名称:i Phone Developer, 选择身份类型:自签名根证书, 选择证书类型:代码签名, 并钩上覆盖默认值;由于苹果的App需要用证书来签名, 所以证书的来源就显得很重要了, 证书有效期, 默认即可, 电子邮件可以填写真实的Email地址;主要是用于程序签名, 所以保证签名要钩上;要保证把代码签名钩上。点继续;配置完证书了, 点创建;点击完成;列表就多了一项证书;点左上角钥匙串访问, 退出钥匙串访问。

6 结束语

国内苹果手机和苹果平板用户数量比较多, 而苹果台式机和苹果笔记本电脑用户数量却比较少。基于Windows跨平台开发苹果IOS应用程序研究, 可以充分发挥国内Windows普及程度高、苹果移动设备数量多的优点, 能有效降低开发难度和减少资金投入。笔者采用这种开发模式成功开发了多个苹果手机应用系统, 开发效率比较高, 希望对从事移动互联网开发的技术人员有所启迪。

摘要:本论述重点研究基于Windows平台和Delphi xe7开发工具, 自动控制苹果MAC虚拟机和XCODE工具, 在IOS仿真器上发布、部署、调试IPHONE应用系统。通过开发环境分析, 快速构建跨平台开发环境;通过手势识别开发和弹出式菜单开发, 指导读者快速掌握IOS开发技巧;通过IPHONE模拟器发布和实体机发布, 指导读者快速掌握成果发布技术。

关键词:IOS MAC XCODE,数据库,应用,软件,系统,信息,开发

参考文献

[1]Brian Larson.Microsoft SQL Server2000 Reoporting Services[M].北京:清华大学出版社, 2005.

[2]杨凯.Delphi7下Intra Web应用开发详解[M].北京:电子工业出版社, 2003.

上一篇:淤泥软土地基下一篇:他汀类药物的不良反应