天天看點

iOS7新特征 Xcode 5中非常期待的6個功能

iOS7新特征 Xcode 5中非常期待的6個功能

87643583

引言

今天(中原標準時間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,或者對已有的程式進行更新更新,在設計的時候,都需要時刻記住這些特點。

iOS7新特征 Xcode 5中非常期待的6個功能

design_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),如果你英文好的話,建議你去閱讀原文。

遊戲

iOS7新特征 Xcode 5中非常期待的6個功能

25

在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。

地圖

iOS7新特征 Xcode 5中非常期待的6個功能

1_image-large

基于地圖資訊,蘋果對Map Kit framework (MapKit.framework)做了大量的改進,并新增了不少功能。使用地圖來顯示的位置資訊現在可以利用3D地圖了,可以通過程式設計的方式來控制地圖的視角。Map Kit還做了其它一些重要的改變:

  1. 圖層(Overlay)可以被放置在地圖中不同的層中,這樣就可以将圖層放置在相關資料的上面或者下面。
  2. 可以使用MKMapCamera對象在地圖中增加一個位置、傾斜和航向資訊。攝像頭資訊可以給地圖增加3D視圖體驗。
  3. 通過MKDirection類可以從蘋果那裡請求獲得方向相關的線路資訊。通過獲得的線路資訊可以建立一個圖層并顯示到地圖中。
  4. MKGeodesicPolyline類可以參照地球的曲率,建立一個基于線條的圖層。
  5. 使用MKMapSnapshotter類可以捕捉基于地圖的圖檔。
  6. 目前可視化的圖層是基于MKOverlayRenderer的,這取代了之前的圖層視圖,并提供了一個簡單的渲染方法。
  7. 可以使用MKTileOverlay和MKTileOverlayRenderer類來取代地圖上已有的大頭針(tile)。

更多相關資訊,請閱讀Map Kit Framework Reference 。

AirDrop

iOS7新特征 Xcode 5中非常期待的6個功能

ios-7-air-drop

通過AirDrop,使用者可以給附近的iOS裝置分享圖檔、文檔、URL以及其它有些資料。AirDrop支援内置到已有的UIActivityViewController中——這個類會根據分享的不同資料顯示出不同的選項。蘋果建議:如果你的程式中還沒有使用這個類,請考慮将其添加到程式中。程式間的音頻(inter-App Audio)

iOS7新特征 Xcode 5中非常期待的6個功能

InterAppAudio2013

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

點對點的連接配接

iOS7新特征 Xcode 5中非常期待的6個功能

apple-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閱讀清單中。
iOS7新特征 Xcode 5中非常期待的6個功能

初窺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動力簡介

iOS7新特征 Xcode 5中非常期待的6個功能

什麼是UIKit動力?—— 一句話:UIKit動力提供了一個模拟真實世界中力學相關的動畫和互動系統。比如重力、碰撞和吸附等。UIKit動力具有可組合、可重用和聲明式的特點。

在程式中利用UIKit提供的接口來實作力學行為,可以減少80%的代碼量。

UIKit動力架構

iOS7新特征 Xcode 5中非常期待的6個功能

如上圖所示,UIKit動力系統中,涉及到如下4個内容:

UIDynamicAnimator:UIDynamicAnimator介于iOS圖形引擎和動力項(View)之間,具有如下功效:

iOS7新特征 Xcode 5中非常期待的6個功能

  1.提供動力行為的上下文

2.根據ref view确定坐标系

3.控制動力引擎

4.維護着動力行為的狀态

UIDynamicAnimatorDelegate是與UIDynamicAnimator相關的一個delegate。主要用于動力行為被啟動或者暫定時,做出的回應。也就是說,在動力行為運作期間,有兩個事件(啟動和暫定)可供我們使用。

iOS7新特征 Xcode 5中非常期待的6個功能

  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]; 

運作程式,首先可以看到主畫面如下圖所示:

iOS7新特征 Xcode 5中非常期待的6個功能

  當點選開始按鈕時,畫面中上部的圖檔會按照重力加速度,垂直往下墜落,如下圖所示:

iOS7新特征 Xcode 5中非常期待的6個功能

  在重力行為運作過程中,如果點選停止,就可以停止重力行為,view的狀态為停止前的狀态。

代碼下載下傳:

iOS7新特征 Xcode 5中非常期待的6個功能

來源: 破船的部落格 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的設計理念有相通之處——扁平化。

iOS7新特征 Xcode 5中非常期待的6個功能

QQ20130715-1

如下圖所示,我們可以看看Toolbar在Xcode 4和Xcode 5中的對比(左邊為Xcode 4,右邊為Xcode 5)

iOS7新特征 Xcode 5中非常期待的6個功能

QQ20130715-3

2、源碼控制

在Xcode 5中,可以從一個已有的工程中check out代碼,然後進行開發。

iOS7新特征 Xcode 5中非常期待的6個功能

QQ20130715-5

可以友善的浏覽和選擇Rep。

iOS7新特征 Xcode 5中非常期待的6個功能

QQ20130715-6

在菜單中,有一個Source Control,可以友善的對代碼進行Commit、Push、Pull、選擇分支、建立分支等操作。如下圖所示:

iOS7新特征 Xcode 5中非常期待的6個功能

QQ20130715-7

另外,還可以友善的查找到某行代碼是誰修改的,如下圖:

iOS7新特征 Xcode 5中非常期待的6個功能

QQ20130715-8

3、自動配置

隻需要在Xcode賬号中輸入Apple ID,Xcode就能夠幫助開發者完成一些配置項(iCloud、Game Center、Passbook和Maps等),作為開發者隻需要簡單的打開或者關閉相關功能即可,Xcode會自動的發送provisioning profile、建立entitlement、更新Info.plist檔案、甚至是連結到所需要的架構——所有這些繁瑣的事情都不再需要開發者親自操作了。

iOS7新特征 Xcode 5中非常期待的6個功能

QQ20130715-9

iOS7新特征 Xcode 5中非常期待的6個功能

QQ20130715-10

4、代碼文檔能力

從現在開始,Xcode可以從api中提取出文檔注釋了。相信這是好多開發者都期望有的功能。如下圖所示:

iOS7新特征 Xcode 5中非常期待的6個功能

QQ20130715-11

5、Datatip

在利用Xcode調試代碼的時候,通過Datatip可以可以非常友善的檢視變量的值。

Datatip可以顯示出來自LLDB的概要資訊,以及列印出某個變量的描述資訊(不用再跑到consle中輸入PO啦),如下圖:

iOS7新特征 Xcode 5中非常期待的6個功能

QQ20130715-13

當然,圖文資訊也可以友善的顯示出來,如下所示:

iOS7新特征 Xcode 5中非常期待的6個功能

QQ20130715-14

iOS7新特征 Xcode 5中非常期待的6個功能

QQ20130715-15

6、Debug 儀表

通過Debug儀表可以顯示出程式運作時,CPU、記憶體等實際發生的事情,這樣可以非常容易的查出并修正潛在的bug。

iOS7新特征 Xcode 5中非常期待的6個功能

QQ20130715-16

iOS7新特征 Xcode 5中非常期待的6個功能

QQ20130715-17

7、破船有話要說

還記得使用Xcode 3版本開發iOS程式的時候,感覺這個工具不好使用,當時的IB和Xcode還是分開的,打開個xib檔案,IB也要啟動半天,更别說界面與代碼的整體開發效率了。現如今看到蘋果對Xcode做了很多改進,使用越來越友善,開發效率也大大提升,這對大多數開發者來說,絕對是福利!!!