美文网首页
历代iOS版本 — iOS5

历代iOS版本 — iOS5

作者: Trigger_o | 来源:发表于2020-04-23 15:01 被阅读0次

1:加入了NSJSONSerialization类,可以将JSON和Foundation objects相互转换
2, ARC的加入自动引用计数的管理
3通知中心,提供了--种新颖的,不需要打断用户就能方便地显示和管理程序通知的方式。ios 5.上的通知中心是基于现有的通知系统构建的,所以您现存的本地通知和推送通知仍然可以工作。推送通知现在已经嵌入到Xcode中,您可以比以前更加方便地在程序中实现这一功能。
4新增控件.UIStepper 2.UIAlertView样式修 改3 UIScreen调节亮度4UlAppearance应用于全部属性5UlPageViewController 6管理资源库ALAssetsLibrary ALAssetsLibrary提 供了我们对iOS设备中的相片、视频的访问。7Core Image
5 Storyboard可以利用Xcode设计工具中的新功能Storyboard来为应用程序设计工作流。针对使用导航栏和标签栏来在各个视图间切换的应用程序而言,Storyboard简化了管理视图控制器的开发过程。您可以指定需要切换的视图以及过渡的顺序,而不用手写代码StoryBoard是iOS 5的新特征,旨在代替历史悠久的NIB/XIB (其实StoryBoard还是基于NIB/XIB的,不过开发人员已经无需直接跟NIB打交道了)。目前关于StoryBoard的文档并不多,苹果的iOS 5的开发者文档里也仅有不多的介绍。所以,本文只是简单的谈谈本人对StoryBoard的一些粗浅的理解。(StoryBoard有 时也叫做StoryBoarding,我不太注意这种细节,所以两个词经常会混用,如果你英语可以的话,能体会到两者的细微差别)StoryBoarding机制比之NIB/XIB的的优势何在呢?个人认为,StoryBoard有 以下几
个优点:
能够减少很多跟View相关的代码;
能够使View和Controller进一步解耦;
能够优化程序的“页面流”,使程序的结构更清楚;
要理解这些优点,我们先要对NIB有一个基本的认识。通常,NIB是和ViewController相关联的,很ViewController都有对应的NIB文件。NIB文件的作用是描述用户界面以及初始化对象和界面元素对象。其实开发者在NIB里描述的界面和初始化的对象都能够在代码中实现;之所以用Interface Builder来绘制界面,是为了减少那些设置界面属性的无聊和重复的代码,让开发人员能够集中精力做程序的功能。而StoryBoard的出现,则是进一步 加强了这方面的功能; NIB文件是没有办法描述从一个ViewController到另- -个ViewController的过渡的。 这种过渡只能靠手写代码来实现。相信很多人都会经常用到-presentModalViewController:animated:以及-pushViewController:animated这两个方法。这种代码在Storyboarding里将成为历史;取而代之的是Segue。Segue定义了从一个ViewController到另-个ViewController的过渡。在Storyboard里, 我们只需要像连接界面对象和ActionMethod那样把ViewController之间用Segue连接起来就可以了,不再需要手写代码了。即便你像自定义Segue,你也只需写Segue的实现, 而无需编写调用的代码,StoryBoard会帮你调用的。这就是上面所说的第-个优点。
要用好Storyboarding机制,那么必须严格遵守MVC原则。要让View和Controller充分解耦;并且不同的Controller之间也要充分解耦。否则,程序的业务逻辑就会乱成一团,很难理解。
举个例子来说:在过去,特别是初学Cocoa Touch开发的时候,很多人都喜欢直接把AppDelegate当ViewController用,直接在AppDelegate和MainMenu.xib之间交互。应该说,这是- -个非常不好的习惯。AppDelegate的作用很简单,就是处理UlApplication的回调,而不应该负责用户界面的处理。很多iOS教程为了省事,都直接把AppDelegate当ViewController用,甚至直接举例在UIWindow.上绘制界面。虽然,作为教程这么做很简单明了,因为UIWindow也是UIView的子类,但是这却不是一种优良的实践。因为由ViewController来负责处理View才是正确的做法。近一段时间,苹果的项目模版经常发生改变,特别是自从Xcode 4发布之后,程序模版(如,View Based Application)开始鼓励使用UIWindow的rootViewController属性来指定第一屏 的ViewController,以保证AppDelegate专注于它应该做的事情。而引入StoryBoard之后,AppDelegate已经不管ViewController的事情了;第一屏所使用的ViewController (也就是rootViewController)可以在StoryBoard中设置。这样,程序的入口点就能从
StoryBoard的“设计图”上一目了然了。这是第二个优点。
至于第三个优点,就是StoryBoard的“ 设计图”了。StoryBoard能够包含一个程序所有的ViewController以及它们之间的连接。因此,StoryBoard甚 至可以作为程序的“设计图”来用了。理想情况下,在程序开发接近尾声的时候,我们只需对比StoryBoard的“流程”和最初程序的设计“流程”,就知道程序有没有‘“走样”了。
说完了优点,我们来看看从NIB/XIB到StoryBoard的迁移,我们需要有哪些理解和实
践上的改变呢?首先,自然是(在做程序开发的时候) ViewController不再 需要NIB/XIB了(虽然在
后台还是用的NIB)。以前在NIB/XIB.上做的连接Outlet和Action的操作都可以在StoryBoard.上完成了;
第二,孤儿View (独立于ViewController的View)是不能出现在StoryBoard里的,View必须通过ViewController来管理(StoryBoard更 像是Controller对象的容器,而不是View对象的容器,NIB/XIB可 以作为View对象的容器) ;
第三,ViewController之间的过渡代码已经是历史了,用StoryBoard可以直接可视化地连接不同的ViewController;
第四,UIWindow对象的作用被进一步淡化, 甚至可以这么说:其实很多程序根本无需用到UIWindow对象。AppDelegate也不再被鼓励(也不能)用来做ViewController- -你甚至无法在Interface Builder的StoryBoard图.上找到
AppDelegate对象- -因为它本来就不应该用来处理界面(View) 的。最后,写优质的代码,严格遵守MVC设计模式,这样不仅能够让你用好StoryBoard,也能帮助你理解StoryBoard的原理。StoryBoard是非常好的鼓励MVC和代码解耦的手段,能够让开发人员写出更加容易维护的代码。不过对于初学者来说,确实是个对理解力的小挑战。不过作为初学者也不用担心,一旦突破了理解障碍,你就会发现StoryBoard也非常好用一一就像最
初理解NIB/XIB时,Outlet和Action“ 拉线”来“拉线”去,看起来也很神奇;理解之后,发现原来“拉线”神马的也没那么神秘。好了,絮絮叨叨的哕嗦了这么多无聊的文字,相信你也看累了。如果你依然对我写的东西不知所云的话,你可以稍稍研究- -下Xcode 4.2的几个内建模版,然后和使用XIB的模版对比一下,看看苹果是怎么用StoryBoard的,能够很好的帮助你理解Storyboarding机制。当然,千万不要忘记亲自动手用一用StoryBoard.

6.新增一套图形处理API core image
您可以使用CoreImage在镜头和编辑图片的应用程序中创建令人惊叹的效果。Core Image是一个硬件加速的框架,使您可以轻松地增强照片和视频。Core Image提供了一些内置的滤镜,例如颜色效果,变形和变换等。同时它还包括一-些高级功能如自动增强,消除红眼,脸部识别等iOS5给我们带来了很多很好很强大的功能和APl。Core Image就是其中之一,它使我们很容易就能处理图片的各种效果,色彩啊,曝光啊,饱和度啊,变形啊神马
的。可惜苹果一直没能完善官方文档,也没有推出示例代码,所以国内很多同学可能还没有开始使用。
但国外的大神们已经证明这是个相当强悍的框架,不仅功能强大,而且可以直接使,用GPU,效率奇高,甚至可以实时的对视频进行渲染。下面让我们来看看,如何具体使用它:
首先你需要导入Corelmage.framework框架;进行Mac (不是iOS) 开发的同学请导入QuartzCore.framework框架,包含在其中了。然后我们先来看看3个主要的类:
CIContext:它与Core Graphics和OpenGL context类似,所有Core Image的处理.流程都通过它来进行;
Cllmage:它用来存放图片数据,可以通过Ullmage, 图片文件或像素数据创建;
CIFilter:通过它来定义过滤器的详细属性。
CIContext有两种初始化方法,分别对应GPU和CPU
//创建基于GPU的CIContext对象
context = [ClContext contextWithOptions: nil];
//context = [CIContext contextWithOptions: [NSDictionary
dictionaryWithObject:[ NSNumber numberWithBool:YES]
forKey:kCIContextUseSoftwareRenderer];

  一般采用第-种基于GPU的,因为效率要比CPU高很多,但是要注意的是基于GPU

的CIContext对象无法跨应用访问。
比如你打开UllmagePickerController要选张照片进行美化,如果你直接在
UllmagePickerControllerDelegate的委托方法里调用CIContext对象进行处理,那
么系统会自动将其降为基于CPU的,速度会变慢,所以正确的方法应该是在委托方

Cllmage的初始化方法有很多,常用的也是2种:
/I通过图片路径创建Cllmage
NSString *filePath = [[NSBundle mainBundle]
pathForResource:@"image" ofType:@"png"];
NSURL *fileNameAndPath = [NSURL fileURLWithPath:filePath];
beginlmage = [Cllmage
imageWithContentsOfURL:fileNameAndPath];
//通过Ullmage对象创建Cllmage
Ullmage *gotImage= ..;
beginlmage = [Cllmage imageWithCGlmage:gotlmage.CGlmage];
ClFilter初始化:
//创建过滤器
filter = [ClFilter filterWithName:@"ClSepiaTone"];
[filter setValue:beginlmage forKey:kClInputImageKey];
[filter setValue:[NSNumber numberWithFloat:slideValue]
forKey:@"inputIntensity"];
第一行:指定使用哪一-个过滤器,通过[ClFilter
filterNamesInCategory: kCICategoryBuiltln ]能得到所有过滤器的列表
第二行:指定需要处理的图片
第三行:指定过滤参数,每个过滤器的参数都不-样,可以在官方文档里搜索“Core
Image Filter Reference”查看
得到过滤后的图片并输出:
?
Cllmage *outputlmage = [filter outputlmage];
CGImageRef cgimg = [context createCGIlmage:outputlmage
fromRect:[outputlmage extent]];
Ullmage *newlmg = [ullmage imageWithCGlmage:cgimg];
[imgV setImage:newlmg];
CGlmageRelease(cgimg);
第一行:通过[filter outputImage]可以得到过滤器输出的图片
第二行:通过CIContext的方法createCGlmage: fromRect:得到
CGImage
第三行:转化为Ullmage,这样我们就可以跟据需要显示在界面上了

7.模拟位置信息
现在您可以测试应用程序位置相关的功能而无需离开办公桌。您可以在ios模拟器中从预先设置的位置和路线中选择,并且指定一个您程序运行时的经纬度。
8.无需PC
iOS5包含很多功能,可以让用户自由灵活地使用他们的设备而不需要一台Mac或者PC计算机。扩展您的程序功能,移除用户访问PC的需要。利用iCould存储来保存文档和用户数据,这些数据会自动同步,用户可以在所有设备上访问这些数据
9.新的工具
除了ARC之外,ios 5 SDK还包括了一些新的工具,如带CPU策略的时间分析器,让您以一种新的方式来查看时间分析的数据,同时还有系统调用跟踪,网络活动和网络连接等工具。

  1. iMessage
    iMessage是-项新的消息服务,能够在所有使用Wi-Fi或者3G的ios 5用户间工作。iMessage会自动的推送到所有ios 5设备,使得在iPhone、iPad 和iPod touch间维持同一个会话十分容易。在ios 5 SDK中,Message表单现在已经支持iMessage服务,所以您可以在您的程序中发起单独的或者群组的文本通讯
  2. OpenGL ES
    现在利用最新的iOs硬件开发一款漂亮的游戏更为容易。GLKit 是一个新的高层框架,集成了最新OpenGL ES 2.0功能中高级的渲染和贴图技术。该框架经过了优化以利用硬件加速的数学计算,所以您可以获得最好的性能。ios5SDK同样包括了Apple新开发的OpenGL ES扩展,专为高级的游戏开发者设计。Xcode中新提供的OpenGL ES调试器能够让您方便地跟踪代码中和OpenGL ES相关的问题。
    13 AirPlay
    作为在ios 4.2引入的新功能,AirPlay 能够将视频,音频和照片作为媒体流输入到Apple TV上。在ios 5中,AirPlay 可以将iPad 2上的任何内容通过Apple TV无线镜像到HDTV上。您的应用程序会自动支持这一功能。您也可以调用额外的API从而在每个HDTV和iPad2屏幕_上显示不同的内容。在ios5中,使用了AVFoundation框架的应用程序可以通过AirPlay将视频和音频内容转成媒体流,并且AirPlay现在支持通过HTTP Live媒体流发布加密的媒体流内容。
    14游戏中心
    游戏中心在iOS 5中支持多人游戏中的回合制游戏。在回合制游戏中,玩家可以在方便的时候才做出游戏动作,而游戏中心会管理每一个回合。 游戏中心将自动通过通知中心发送一个推送通知到下一个游戏玩家。其他为开发者提供的功能还包括,添加玩家到现有的多人游戏中,显示成就通知,每个排行榜支持不同的图标。

15 Siri语音的加入

16.新增一套数据库管理方式API core data

image.png
core data详解

相关文章

网友评论

      本文标题:历代iOS版本 — iOS5

      本文链接:https://www.haomeiwen.com/subject/fccaihtx.html