iOS7新特征

来源:互联网 发布:杂诗 王维 应知赏析 编辑:程序博客网 时间:2024/05/21 17:04

 

8764358387643583

 

引言

今天(北京时间2013年06月11日)凌晨,由库克引领的苹果发布了iOS7,本次新系统的发布可以说是iOS自发布以来最大的一次变革,iOS的设计由之前的拟物变为了现在的扁平化——这也标志着苹果真正的进入了库克时代。

目前苹果只发布了iOS7的beta版本,虽然据闻有不少bug,不过无论你对iOS7的设计是吐槽也好,惊艳也罢,基调已经定下来了,苹果的这次革新,是否能够获得用户的青睐,就让用户来检验吧。

按照往年的惯例,iOS7的release版本预计会在今年9月份发布,在这差不多3个月的时间里面,苹果的主要任务估计就是完善并加强iOS7的稳定性了。

为了观察开发者对WWDC2013的关注情况,在WWDC开幕的时候,笔者分别在新浪微博和Twitter上检索WWDC关键字,发现相关新讯息更新的速度非常快,从这一个角度来说,无论是国内的开发者,还是国外的开发者,对苹果非常的期待。

虽说iOS和相关设备的每次升级更新,都会引来大批的code monkey吐槽(譬如去年iPhone5的发布),不过吐槽归吐槽,想想社会是进步的,没有大胆的尝试,又哪来进步呢——无论成功与否,苹果这种引领业界创新的精神才应该是值得大家欣赏与效仿的!

好吧,上面说了一大堆内容,貌似与本文主题“iOS新特征”偏离太远,下面我们就来看看iOS7里面的一些新特征:

正文

无论是对于开发者或用户来说iOS7都是非常重要的一次更新,iOS7对UI进行了彻底的重新设计。另外为了创建2D和2.5D游戏,iOS7引进了一套全新的动画系统。在iOS7中,多任务的增强、点对点的连接,以及其它一些重要的特征都足以使iOS7意义非凡。

下面我们就来细数一下iOS7的新特征:

关键字:用户界面的改变、多任务的增强、游戏、地图、AirDrop、应用程序间的音频、点对点的连接、一些新的Framework、已有Framework的增强、OC和弃用的一些API等。

关于本文:新特征介绍1 首先介绍一下iOS7中用户界面的改变多任务的增强

用户界面的改变

在iOS7整个系统中,每一方面的设计都重点突出功能以及用户的内容——半透明和精致的视觉感受——流畅和逼真的动作——具有清晰、深入和有活力的用户体验。对于开发者来说,无论是创建一个全新的App,或者对已有的程序进行升级更新,在设计的时候,都需要时刻记住这些特点。

design_functional_gallery2design_functional_gallery2

 

在用户界面设计中,新增了一个重要的概念:UIKit动力(UIKit Dynamics)。通过UIKit动力,在我们的程序中可以为UIView对象指定动力行为,以及让别的对象遵循UIDynamicItem协议——(遵循该协议的对象称为动力项[dynamic items])。动力行为通过将现实世界中的行为和特征与程序相结合(例如将重力加入程序的动画中),以提供一种增强用户体验的方法。UIKit默认支持如下5种动力行为:

吸附行为(UIAttachmentBehavior):有一个对象UIAttachmentBehavior,该对象用来指定两个动力项(项或点)之间的连接,当一个项或者点移动时,吸附的项也随之移动。当然,这个连接并不是完全是静态的(static),吸附的项有两个属性damping(阻尼)和oscillation(震荡),这两个属性决定了吸附项的行为是如何随时间而变化的。

碰撞行为(UICollisionBehavior):通过对象UICollisionBehavior指定一个边界,并且让各个动力项,在该边界内参与碰撞。UICollisionBehavior对象还可以指定这些动力项适当的回应碰撞。

重力行为(UIGravityBehavior):通过对象UIGravityBehavior给动力项指定一个重力矢量,具有重力矢量的动力项,会在重力矢量的方向上一直加速,直到与别的动力项产生了冲突或者,遇到了边界。

推动行为(UIPushBehavior):通过对象UIPushBehavior给动力项指定一个持续的或者瞬时的力(force vector)。

捕捉行为(UISnapBehavior):通过对象UISnapBehavior给动力项指定一个捕捉点。动力项会根据配置的效果,来抓住这一捕捉点。

当动力行为被添加到animator(UIDynamicAnimator类的实例对象)时,动力行为就被激活。animator为动力行为的执行提供了上下文。动力项可以有多个行为,只不过所有这些行为都必须添加到相同的animator中。

更多关于动力行为的使用,请参考UIKit Framework Reference。

另外还有Text Kit是一个功能齐全、更高级别的Framework——通过该Framework,可以对程序中的文本内容进行精致的排版。Text Kit能够将文本内容按照段落、列和页进行布局。可以很容易的让文本围绕着某个区域进行布局(例如图形),并且可以管理多种字体。值得一提的是,在iOS7中,已经将TextKit整合到所有基于文本的控件中,这样一来,在程序中,对文本的创建、编辑、修改和显示都非常的容易——不像在之前iOS中,需要更多的代码来实现。

关于动力行为和Text Kit,随后,笔者会给出一些示例,敬请关注!

下面我们来看看iOS7中对多任务都做了哪些增强。

多任务的增强

iOS7中,应用程序的后台执行模型,新增了如下两种类型:

  1. fetch:如果应用程序需要从网络中有规律的下载新数据,那么现在可以通过向系统注册一下,使新数据的下载操作可以定期的被唤醒或者启动以在后台进行下载。注册方法为:在程序的Info.plist中,将UIBackgroundModes键值设置为fetch,然后在app delegate中,使用方法setMinimumBackgroundFetchInterval:来设置下载新数据操作之间的最小时间间隔。另外,必须在app delegate中实现application:performFetchWithCompletionHandler:方法以执行任意的下载。
  2. remote-notifaction:在iOS7之前,程序中使用的推送通知是用来给用户推送新的消息,而有新的消息到达时,如果需要获得消息相关更多内容时,还需要用户启动相应的程序,以在程序中获取新的消息内容,而现在在iOS7中,通过推送通知,可以启动一个后台下载操作任务。要使用这种模型,只需要将程序Info.plist文件中的UIBackgroundModes键值设置为remote-notification,然后在app delegate中实现application:didReceiveRemoteNotification:fetchCompletionHandler: 方法。

无论是fetch或remote-notification后台执行模型,在适当的时机,都有可能被启动或者从休眠(suspended)状态转移到后台状态。就拿fetch后台模型来说,系统会根据当前可用的信息来来决定启动或者唤醒程序的最佳时机。例如,当网络条件不错,或者设备已经被唤醒的时候,会启动或唤醒程序以执行程序的fetch后台操作。再来看看remote-notification后台执行模型——当有一条新的推送通知到达设备时(在通知用户之前),程序可以先去下载新的消息内容,当内容都准备好之后,就可以通知用户了——可见,对于remote-notification后台执行模型,可以让用户把注意力都集中在内容上,这也符合本文开头提到的iOS7设计重心。

在程序中,处理后台下载数据时,应用使用NSURLSession类。这个类对已有的NSURLConnection类进行了改进——针对初始化和处理NSURLRequest对象,提供了一个简单的、基于任务的接口。单个NSURLSession对象可以初始化多个下载和上传任务,并且通过它的delegate,可以处理来此服务器的任意身份认证请求。

关于多任务的更多内容,在随后的博文中,笔者会进行详细的介绍,读者也可以查阅iOS App Programming Guide中的“App States and Multitasking”。

提醒:本文的内容主要参考苹果官网提供的一份文档:What’s New in iOS 7(From My GitHub,From Apple),如果你英文好的话,建议你去阅读原文。

游戏

2525

在iOS7中,苹果加强了对游戏开发的支持。这主要体现在如下三个方面:

  • Sprite Kit Framework

Sprite Kit Framework (SpriteKit.framework)提供了一个优化了的硬件加速动画系统——用于创建2D和2.5D游戏。包括了游戏开发中许多重要的基本内容:图形渲染、动画系统、声音播放,并还有一个物理模拟引擎。通过Sprite Kit Framework可以让开发者把工作重点放在游戏内容的设计和交互上。

Sprite Kit Framework中,内容是以场景(scenes)的形式组织的。一个场景可以包括:纹理对象、视频、基于路径的形状、图片滤镜以及其它有些特殊的效果。Sprite Kit以最有效的方式来决定这些对象在屏幕上的渲染。当需要在场景中对某个对象进行动画时,可以使用Sprite Kit来明确的指定一个动作,或者使用物理模拟引擎给某个对象定义一个物理行为(例如重力、吸附和排斥)。

除了Sprite  Kit Framework,苹果还提供了Xcode工具来创建粒子发射效果和纹理集合。通过Xcode工具可以管理程序的assets,以及快速的更新Sprite Kit场景。

更多关于如何使用Sprite Kit,读者可以参考Sprite Kit Programming Guide。苹果也提供了一个示例演示如何使用Sprite Kit:Explained Adventure(From Apple)。

  • Game Controller Framework

Game Controller Framework (GameController.framework)可以让你在程序中发现并对游戏控制器硬件进行配置。通过Game Controller Framework可以让iOS设备通过无线或者蓝牙进行连接。当控制器可用的时候,该Framework会通知你的程序。

更多相关信息可以参考Game Controller Programming Guide。

  • Game Center 改进

在iOS7中,苹果对游戏中心(Game Center)做了如下改进:

  1. 给玩家提供一个与其它玩家互动的机会,即使目前还没有轮到该玩家。通过该功能,可以实现玩家之间的聊天、交易等(即使没有轮到玩家)。
  2. 每个程序的排行榜限制已经从原来的25变为100.通过GKLeaderboardSet对象,可以对你的排行榜进行组织,并把上限增加只500。
  3. 在游戏中进行挑战(做任务)的时候,可以为这个挑战添加条件限制。例如,在驾驶游戏中,指定必须使用相同的车辆。
  4. 为了防止作弊,增加了认证的支持,以及其它有些功能。

更多关于如何使用新的Game Center功能,请参考Game Center Programming Guide 。

关于Game Kit Framework,请参考Game Kit Framework。

地图

1_image-large1_image-large

基于地图信息,苹果对Map Kit framework (MapKit.framework)做了大量的改进,并新增了不少功能。使用地图来显示的位置信息现在可以利用3D地图了,可以通过编程的方式来控制地图的视角。Map Kit还做了其它一些重要的改变:

  1. 图层(Overlay)可以被放置在地图中不同的层中,这样就可以将图层放置在相关数据的上面或者下面。
  2. 可以使用MKMapCamera对象在地图中增加一个位置、倾斜和航向信息。摄像头信息可以给地图增加3D视图体验。
  3. 通过MKDirection类可以从苹果那里请求获得方向相关的线路信息。通过获得的线路信息可以创建一个图层并显示到地图中。
  4. MKGeodesicPolyline类可以参照地球的曲率,创建一个基于线条的图层。
  5. 使用MKMapSnapshotter类可以捕捉基于地图的图片。
  6. 目前可视化的图层是基于MKOverlayRenderer的,这取代了之前的图层视图,并提供了一个简单的渲染方法。
  7. 可以使用MKTileOverlayMKTileOverlayRenderer类来取代地图上已有的大头针(tile)。

更多相关信息,请阅读Map Kit Framework Reference 。

AirDrop

ios-7-air-dropios-7-air-drop

通过AirDrop,用户可以给附近的iOS设备分享图片、文档、URL以及其它有些数据。AirDrop支持内置到已有的UIActivityViewController中——这个类会根据分享的不同数据显示出不同的选项。苹果建议:如果你的程序中还没有使用这个类,请考虑将其添加到程序中。程序间的音频(inter-App Audio)

InterAppAudio2013InterAppAudio2013

Audio Unit framework (AudioUnit.framework)现在支持程序间的音频了——可以在同一台设备上不同的两个程序之间发送MIDI命令和音频流。例如,通过该功能,你可以使用一个程序来录制音乐,然后将录制的音乐音乐发送到另外一个能对音乐进行处理的程序中。

为了公开(vend)你程序中的音频数据,需要发布一个AURemoteIO实例来充当音频组件——对其它进程是可见的。在iOS7里面,要在另外一个程序中使用程序间的音频功能,请使用音频组件发现接口。【翻译自苹果官网中的如下内容,还不是太理解具体意思,如果大家知道的话,可以告诉我,谢谢!】

To vend your app’s audio data, publish a AURemoteIO instance as an audio component that is visible to other processes. to use audio features from another app, use the audio component discovery interface in iOS 7.

更多相关内容请看:Audio Toolbox Framework Reference

点对点的连接

apple-wwdc-2013-3aapple-wwdc-2013-3a

通过Multipeer Connectivity framework (MultipeerConnectivity.framework)可以查找附近的设备,并直接与这些设备进行通讯——不需要通过互联网。该Framework具有这样的特点:很容易的创建多点(multipeer)会话、支持稳定、可靠和实时的数据传输。可以看出,通过该Framework,你的程序可以与附近的设备进行通讯,并做到数据的无缝交换。

该Framework提供了两种方式来查找并管理网络服务:编程方式和基于UI选项。可以使用MCNearbyServiceBrowser类以编程的方式查找并管理设备。另外,我们可以将MCPeerPickerViewController集成到程序中——用来显示用户可以选择的设备列表。

更多相关信息,请阅读:Multipeer Connectivity Framework Reference

新增的Framework

在iOS7中,新增了如下一些Framework:

  1. Game Controller framework(GameController.framework):提供了与游戏相关的硬件通讯接口。
  2. Sprite Kit framework(SpriteKit.framework):提供了基于精灵(sprite-based)的动画和图形渲染。
  3. Multipeer Connectivity framework(MultipeerConnectivity.framework):提供设备间点对点通讯的功能。
  4. JavaScript Core framework (JavaScriptCore.framework):提供了用Objective-C封装的大量标准JavaScript对象。通过该framework可以对JavaScript代码进行评估(evaluate),以及解析JSON。
  5. Media Accessibility framework (MediaAccessibility.framework):管理媒体文件中字幕(closed-caption)内容的显示。通过该Framework与settings的结合,可以让用户开启字幕的显示。
  6. Safari Services framework (SafariServices.framework):通过该framework,可以通过编程的方式将URL添加到用户的Safari阅读列表中。

QQ20130612-20

初窥UIKit Dynamics

小引
通过之前的4篇文章,笔者把iOS7中的涉及到的一些新特征做了一个简单的介绍。本文将带领大家初窥新特征里面的一个topic:UIKit动力(UIKit Dynamics)。
 

注1:关于UIKit Dynamics的中文名称:我在这里叫做UIKit动力,也有人叫UIKit动力模型和UIKit动态,总感觉怪怪的——所以大家在看到的时候不要在意即可。

 

注2:今天有开发者提起iOS7 beta还处于苹果的NDA(Non-Disclosure Agreement)状态,也就是说目前关于iOS7 beta的任何内容除了官方公开发表的信息外,作为开发者最多只能在苹果的开发者论坛上进行讨论交流,禁止在公开场合谈论关于iOS7 beta的信息。关于NDA感觉国外的意识比较好,就跟版权意识一样。由此笔者也在这里友情提醒一下:读者单纯的看本系列文章即可,在iOS7 release之前,保持沉默状态。

 

注3:本文在写作的时候参考了如下一些内容(具体内容请登录苹果开发者网站查阅):
1.WWDC 2013 session 206 — Getting Started with UIKit Dynamics
2.UIDynamicAnimator Class Reference
3.UIDynamicAnimatorDelegate Protocol Reference
4.UIDynamicBehavior Class Reference
5.UIDynamicItem Protocol Reference
6.UIDynamicItemBehavior Class Reference
7.UIKit Dynamics Catalog(Sample Code)


UIKit动力简介


 

什么是UIKit动力?—— 一句话:UIKit动力提供了一个模拟真实世界中力学相关的动画和交互系统。比如重力、碰撞和吸附等。UIKit动力具有可组合、可重用和声明式的特点。

 

在程序中利用UIKit提供的接口来实现力学行为,可以减少80%的代码量。


 
UIKit动力架构


 

如上图所示,UIKit动力系统中,涉及到如下4个内容:

UIDynamicAnimator:UIDynamicAnimator介于iOS图形引擎和动力项(View)之间,具有如下功效:


 
1.提供动力行为的上下文
2.根据ref view确定坐标系
3.控制动力引擎
4.维护着动力行为的状态

UIDynamicAnimatorDelegate是与UIDynamicAnimator相关的一个delegate。主要用于动力行为被启动或者暂定时,做出的回应。也就是说,在动力行为运行期间,有两个事件(启动和暂定)可供我们使用。


 
UIDynamicBehavior:主要用来描述动力的行为。在iOS7中,默认提供了如下动力行为:
1.UIAttachmentBehavior
2.UICollisionBehavior
3.UIDynamicItemBehavior
4.UIGravityBehavior
5.UIPushBehavior
6.UISnapBehavior objects

 

动力行为可以在任意时间内进行添加或移除。另外动力行为可以是组合的,也可以被继承。

 

注意:这些动力行为是在二维空间进行的。

 

Reference View:该用是用来初始化Animator用的,它的作用是给动力行为提供坐标系。

View:在UIKit动力中,又称为动力项(dynamic item)。动力项是遵循UIDynamicItem协议的任意对象(可以是SDK中默认提供的,或者开发者自定义的)。在iOS7 beta中,View已经遵循了该协议,所以一般也会将View当做动力项——动力行为实际针对的对象。

 

代码示例
下面笔者就通过一个例子,演示如何对一个view施加重力行为(UIGravityBehavior)。

 

上面介绍了一大堆,实际使用过程可能没那么复杂,不过原理才是最重要的。

 

新建一个Single View Application模板工程:BVGravityBehavior,在工程中,有如下属性:

  1. @property (nonatomic, weak) IBOutlet UIImageView *square1; 
  2. @property (nonatomic) UIDynamicAnimator* animator; 
  1. // 开始重力行为 
  2. (IBAction)startGravity:(id)sender 
  3.     self.animator [[UIDynamicAnimator alloc] initWithReferenceView:self.view]; 
  4.     UIGravityBehavior* gravityBeahvior [[UIGravityBehavior alloc] initWithItems:@[self.square1]]; 
  5.     [self.animator addBehavior:gravityBeahvior]; 
  1. // 停止重力行为 
  2. (IBAction)stopGravity:(id)sender 
  3.     [self.animator removeAllBehaviors]; 

运行程序,首先可以看到主画面如下图所示:


 
当点击开始按钮时,画面中上部的图片会按照重力加速度,垂直往下坠落,如下图所示:

 在重力行为运行过程中,如果点击停止,就可以停止重力行为,view的状态为停止前的状态。

代码下载:
来源:破船的博客
Cocoa Touch里面新增的内容

该session介绍了iOS 7中Cocoa Touch里面新增的许多内容。

下面是一些学习笔记,供大家参考一下(由于是边看边记录,如有文字录入错误,还请见谅):

1、Multitasking

Background fetching
you must call this at launch
Remote notification
Method: didReceiveRemoteNotification
call the completion handler when fetch is complete
Background transfers
Method: handleEventsForBackgroundURLSession
NSURLSession replace API for NSURLConnection
Data upload download task
session have identifiers

2、view and image

Image Rendering Modes
Creating image with redering mode
method: imageWithRenderingMode:
param: UIImageRenderingMode
Tint
New UIView property
@property (nonatomic, retain) UIColor *tintColor;
Dimming adjustment behavior
@property (nonatomic) UIViewTintAdjustmentMode tintAdjustmentMode;
Finding out about changes
–(void) intColorDidChange;
View Animation
No animations!
+(void)performWithoutAnimation:
Keyframes
+(void)animationKeyframesWithDuration
+(void)addKeyframeWithRelativeStartTime:
UIViewKeyframeAnimationOptions

3、Motion Effects

Applies relative values to key paths of a target view
Affected by device “pose” or position
Affects animatable properties only

class: UIInterpolatingMotionEffect
initialization——initWithKeyPath:
UIMotionEffect
abstract superclass
one method
keyPathsAndRelativeValuesForViewerOffset:
UIOffset: CGFloat horizontal, vertical;
UIView
adding and removing motion effects
addMotionEffect:
removeMotionEffect:
@property (copy, nonatomic) NSArray *motionEffects;

4、Collection Views

Transitions between layouts
method: setCollectionViewLayout: animated: completion
UICollectionViewTransitionLayout

5、View Controllers

Layout
wantsFullScreenLayout
deprecated in iOS 7.0
extended edges
content size
@property (nonatomic) CGSize preferredContentSize;
status bar appearance
new behavior for the status bar
new status bar style
UIStatusBarStyleDefault
UIStatusBarStyleLightContent (new)
// UIStatusBarStyleBlackTranslucent
// UIStatusBarStyleBlackOpaque

6、Custom Transitions

bounded “canned” transition
interactive, user-driven transition
new delegate method on UIViewController
UIViewControllerTransitioningDelegate
UIViewControllerAnimatedTransitioning
UIViewControllerInteractiveTransitioning
UIViewControllerContextTransitioning
ref: WWDC2013 Custom Transitions Using View Controllers

7、State Restoration

Ignoring Snapshots
–(void)ignoreSnapshotOnNextApplicationLaunch;
Other Objects
Non-view and non-view controller can now participate
method: registerObjectForStateRestoration:
Bluetooth State Restoration

8、AirDrop

Adopt UIActivityItemSourceProtocol
Update application’s info.plist to create, register, and export UTI for custom document formats
New Documents/Inbox directory

9、Dynamics

Fluid, responsive animations

Enhances the interactions in you application
Concentration on behaviors

class: UIDynamicAnimator
UIDynamicBehavior
UIDynamicItem

supported behaviors
UIAttachmentBehavior
UICollisionBehavior
UIGravityBehavior
UIPushBehavior
UISnapBehavior
UDynamicItemBehavior

10、Text

Dynamic type sizing
@property(nonatomic, readonly) NSString * preferredContentSizeCategory;
UIFont
Font scaling based on content size category
preferredFontForTextStyle:
Text Kit
Objective-C API
class: NSTextStorage
NSLayoutManager
NSTextContainer
UITextView UITextField UILable
additional class
NSTextAttachment

11、More New Feathures

Multipeer Connectivity
Local network discovery
seesion management
encryptyed sessions
file transfers
SpriteKit
iOS 、OS X
High-performance sprite-based game framework
image atlas support
UIKit and AppKit integration
Game Controller
Buttons
Analog joysticks
Multiple controllers
MapKit
Directions
3D cameras
Map tile overlays
Map snapshots
Geodesic polylines

CoreLocation
Bluetooth LE beacons
advertising
ranging
New region types
Region monitoring
Accessibility
Guided Access API
GameCenter
new turn-based game API
turns tabs
mode for bidding
leader board improvements
system integrity features

本文由破船原创●转载请注明出处●2013-07-03

 

Xcode 5中非常期待的6个功能

自从北京时间2013年06月11日苹果发布Xcode 5 Developer Preview 1,到现在(2013年7约15日)已经过去一个月,苹果也放出了Xcode 5 Developer Preview 3,速度还是蛮快的,希望体验的同学也可以去苹果官网下载。

今晚看了一下WWDC2013的session:What’s New in Xcode 5。那就来说说Xcode 5里面一些值得期待的东西吧。由于Xcode中的新东西比较多,我这里挑选了6个非常好的新东西,供大家了解,如果需要了解更多内容,请移步到上面说的session中。

另:在看视频过程中,要特别感谢乔学士先生汇总的WWDC2013英文字幕。大家可以想象一下,本来英语就不好的拉,要是没有字幕,要想看懂老外讲的内容,那该痛上加痛哈。

目录

0、介绍
1、Toolbar减小30%
2、源码控制
3、自动配置
4、代码文档能力
5、Datatip
6、Debug 仪表
7、破船有话要说

 

正文

0、介绍

该session(What’s New in Xcode 5)介绍了Xcode 5里面为开发者带来的许多新内容,使用过Xcode的同学可能都已经知道,Xcode就是一个完整的开发工具包,可以用来开发在Mac、iPhone和iPad上面的运行的软件。Xcode提供了Instrument 分析工具、iOS模拟器以及操作系统(iOSOS X)相关的一些框架等。

下面就来看看这些值得期待的东西吧。

1、Toolbar减小30%

如下图所示,这样做的目的主要就是让Xcode能够尽可能多的显示与编码相关的内容,让开发者专心写代码。从图中也可以看出,Xcode 5与iOS 7的设计理念有相通之处——扁平化。

QQ20130715-1QQ20130715-1

 

如下图所示,我们可以看看Toolbar在Xcode 4和Xcode 5中的对比(左边为Xcode 4,右边为Xcode 5)

QQ20130715-3QQ20130715-3

 

2、源码控制

在Xcode 5中,可以从一个已有的工程中check out代码,然后进行开发。

QQ20130715-5QQ20130715-5

可以方便的浏览和选择Rep。

QQ20130715-6QQ20130715-6

 

在菜单中,有一个Source Control,可以方便的对代码进行Commit、Push、Pull、选择分支、创建分支等操作。如下图所示:

QQ20130715-7QQ20130715-7

 

另外,还可以方便的查找到某行代码是谁修改的,如下图:

QQ20130715-8QQ20130715-8

 

3、自动配置

只需要在Xcode账号中输入Apple ID,Xcode就能够帮助开发者完成一些配置项(iCloud、Game Center、Passbook和Maps等),作为开发者只需要简单的打开或者关闭相关功能即可,Xcode会自动的发送provisioning profile、创建entitlement、更新Info.plist文件、甚至是链接到所需要的框架——所有这些繁琐的事情都不再需要开发者亲自操作了。

QQ20130715-9QQ20130715-9

QQ20130715-10QQ20130715-10

 

4、代码文档能力

从现在开始,Xcode可以从api中提取出文档注释了。相信这是好多开发者都期望有的功能。如下图所示:

QQ20130715-11QQ20130715-11

 

5、Datatip

在利用Xcode调试代码的时候,通过Datatip可以可以非常方便的查看变量的值。

Datatip可以显示出来自LLDB的概要信息,以及打印出某个变量的描述信息(不用再跑到consle中输入PO啦),如下图:

QQ20130715-13QQ20130715-13

当然,图文信息也可以方便的显示出来,如下所示:

QQ20130715-14QQ20130715-14

 

QQ20130715-15QQ20130715-15

 

6、Debug 仪表

通过Debug仪表可以显示出程序运行时,CPU、内存等实际发生的事情,这样可以非常容易的查出并修正潜在的bug。

QQ20130715-16QQ20130715-16QQ20130715-17QQ20130715-17

 

7、破船有话要说

还记得使用Xcode 3版本开发iOS程序的时候,感觉这个工具不好使用,当时的IB和Xcode还是分开的,打开个xib文件,IB也要启动半天,更别说界面与代码的整体开发效率了。现如今看到苹果对Xcode做了很多改进,使用越来越方便,开发效率也大大提升,这对大多数开发者来说,绝对是福利!!!

原创粉丝点击