Submit Search
Upload
iOS 入門教學
•
85 likes
•
32,315 views
Steven Shen
Follow
我離開前公司前,對三個 Android 工程師做的 iOS 入門教學投影片
Read less
Read more
Technology
Education
Report
Share
Report
Share
1 of 88
Download now
Download to read offline
Recommended
Apostila baloo 1
Apostila baloo 1
GRUPO ESCOTEIRO JOÃO OSCALINO
Manualdo Curso Tecnicodo Ramo Lobinho
Manualdo Curso Tecnicodo Ramo Lobinho
OSMAR THEODORO
ROP 輕鬆談
ROP 輕鬆談
hackstuff
打造你的第一個 iOS App
打造你的第一個 iOS App
彼得潘 Pan
利用 iOS App 技術創業的 13 個方法
利用 iOS App 技術創業的 13 個方法
彼得潘 Pan
如何變成iOS App開發魔法師
如何變成iOS App開發魔法師
彼得潘 Pan
你的程式開發初體驗 (以Swift為例)
你的程式開發初體驗 (以Swift為例)
彼得潘 Pan
Standford 2015 week9
Standford 2015 week9
彼得潘 Pan
Recommended
Apostila baloo 1
Apostila baloo 1
GRUPO ESCOTEIRO JOÃO OSCALINO
Manualdo Curso Tecnicodo Ramo Lobinho
Manualdo Curso Tecnicodo Ramo Lobinho
OSMAR THEODORO
ROP 輕鬆談
ROP 輕鬆談
hackstuff
打造你的第一個 iOS App
打造你的第一個 iOS App
彼得潘 Pan
利用 iOS App 技術創業的 13 個方法
利用 iOS App 技術創業的 13 個方法
彼得潘 Pan
如何變成iOS App開發魔法師
如何變成iOS App開發魔法師
彼得潘 Pan
你的程式開發初體驗 (以Swift為例)
你的程式開發初體驗 (以Swift為例)
彼得潘 Pan
Standford 2015 week9
Standford 2015 week9
彼得潘 Pan
打造你的第一個iPhone APP
打造你的第一個iPhone APP
彼得潘 Pan
Standford 2015 week8
Standford 2015 week8
彼得潘 Pan
為愛打造App
為愛打造App
彼得潘 Pan
iOS 7 SDK特訓班
iOS 7 SDK特訓班
彼得潘 Pan
Swift
Swift
Darshini Parikh
Standford 2015 week7: 1. Unwind Segues, Alerts, Timers, View Animation 2. Dyn...
Standford 2015 week7: 1. Unwind Segues, Alerts, Timers, View Animation 2. Dyn...
彼得潘 Pan
第一次程式親密接觸
第一次程式親密接觸
彼得潘 Pan
服務設計Ncku2013
服務設計Ncku2013
景淳 許
2013 感性工學概述
2013 感性工學概述
景淳 許
MADBike – Destapando la seguridad de BiciMAD (T3chFest 2017)
MADBike – Destapando la seguridad de BiciMAD (T3chFest 2017)
Alex Rupérez
NSCoder Keynote - Multipeer Connectivity Framework
NSCoder Keynote - Multipeer Connectivity Framework
Alex Rupérez
Gigigo Keynote - Geofences & iBeacons
Gigigo Keynote - Geofences & iBeacons
Alex Rupérez
Introdução ao Swift por Henrique Morbin – iOS Developer
Introdução ao Swift por Henrique Morbin – iOS Developer
Henrique Morbin
不能承受的感動 - iOS App實機測試
不能承受的感動 - iOS App實機測試
彼得潘 Pan
Gigigo Workshop - Create an iOS Framework, document it and not die trying
Gigigo Workshop - Create an iOS Framework, document it and not die trying
Alex Rupérez
Introduction to Objective - C
Introduction to Objective - C
Asim Rais Siddiqui
Gigigo Workshop - iOS Extensions
Gigigo Workshop - iOS Extensions
Alex Rupérez
Travis and fastlane
Travis and fastlane
Steven Shen
Objective-C Blocks and Grand Central Dispatch
Objective-C Blocks and Grand Central Dispatch
Matteo Battaglio
Swift vs. Language X
Swift vs. Language X
Scott Wlaschin
ios 5 arc完全指南
ios 5 arc完全指南
lambokini
Flutter 踩雷心得
Flutter 踩雷心得
Weizhong Yang
More Related Content
Viewers also liked
打造你的第一個iPhone APP
打造你的第一個iPhone APP
彼得潘 Pan
Standford 2015 week8
Standford 2015 week8
彼得潘 Pan
為愛打造App
為愛打造App
彼得潘 Pan
iOS 7 SDK特訓班
iOS 7 SDK特訓班
彼得潘 Pan
Swift
Swift
Darshini Parikh
Standford 2015 week7: 1. Unwind Segues, Alerts, Timers, View Animation 2. Dyn...
Standford 2015 week7: 1. Unwind Segues, Alerts, Timers, View Animation 2. Dyn...
彼得潘 Pan
第一次程式親密接觸
第一次程式親密接觸
彼得潘 Pan
服務設計Ncku2013
服務設計Ncku2013
景淳 許
2013 感性工學概述
2013 感性工學概述
景淳 許
MADBike – Destapando la seguridad de BiciMAD (T3chFest 2017)
MADBike – Destapando la seguridad de BiciMAD (T3chFest 2017)
Alex Rupérez
NSCoder Keynote - Multipeer Connectivity Framework
NSCoder Keynote - Multipeer Connectivity Framework
Alex Rupérez
Gigigo Keynote - Geofences & iBeacons
Gigigo Keynote - Geofences & iBeacons
Alex Rupérez
Introdução ao Swift por Henrique Morbin – iOS Developer
Introdução ao Swift por Henrique Morbin – iOS Developer
Henrique Morbin
不能承受的感動 - iOS App實機測試
不能承受的感動 - iOS App實機測試
彼得潘 Pan
Gigigo Workshop - Create an iOS Framework, document it and not die trying
Gigigo Workshop - Create an iOS Framework, document it and not die trying
Alex Rupérez
Introduction to Objective - C
Introduction to Objective - C
Asim Rais Siddiqui
Gigigo Workshop - iOS Extensions
Gigigo Workshop - iOS Extensions
Alex Rupérez
Travis and fastlane
Travis and fastlane
Steven Shen
Objective-C Blocks and Grand Central Dispatch
Objective-C Blocks and Grand Central Dispatch
Matteo Battaglio
Swift vs. Language X
Swift vs. Language X
Scott Wlaschin
Viewers also liked
(20)
打造你的第一個iPhone APP
打造你的第一個iPhone APP
Standford 2015 week8
Standford 2015 week8
為愛打造App
為愛打造App
iOS 7 SDK特訓班
iOS 7 SDK特訓班
Swift
Swift
Standford 2015 week7: 1. Unwind Segues, Alerts, Timers, View Animation 2. Dyn...
Standford 2015 week7: 1. Unwind Segues, Alerts, Timers, View Animation 2. Dyn...
第一次程式親密接觸
第一次程式親密接觸
服務設計Ncku2013
服務設計Ncku2013
2013 感性工學概述
2013 感性工學概述
MADBike – Destapando la seguridad de BiciMAD (T3chFest 2017)
MADBike – Destapando la seguridad de BiciMAD (T3chFest 2017)
NSCoder Keynote - Multipeer Connectivity Framework
NSCoder Keynote - Multipeer Connectivity Framework
Gigigo Keynote - Geofences & iBeacons
Gigigo Keynote - Geofences & iBeacons
Introdução ao Swift por Henrique Morbin – iOS Developer
Introdução ao Swift por Henrique Morbin – iOS Developer
不能承受的感動 - iOS App實機測試
不能承受的感動 - iOS App實機測試
Gigigo Workshop - Create an iOS Framework, document it and not die trying
Gigigo Workshop - Create an iOS Framework, document it and not die trying
Introduction to Objective - C
Introduction to Objective - C
Gigigo Workshop - iOS Extensions
Gigigo Workshop - iOS Extensions
Travis and fastlane
Travis and fastlane
Objective-C Blocks and Grand Central Dispatch
Objective-C Blocks and Grand Central Dispatch
Swift vs. Language X
Swift vs. Language X
Similar to iOS 入門教學
ios 5 arc完全指南
ios 5 arc完全指南
lambokini
Flutter 踩雷心得
Flutter 踩雷心得
Weizhong Yang
Xcode开发员入门导引(简体中文版)
Xcode开发员入门导引(简体中文版)
babyyellow li
Xcode开发员入门导引
Xcode开发员入门导引
Sophia Lindsey
iOS
iOS
qbb225827455
Java Build Tool course in 2011
Java Build Tool course in 2011
Ching Yi Chan
01 A Simple iOS Application
01 A Simple iOS Application
Tom Fan
Xcode tutorial
Xcode tutorial
March Liu
CocoaPods 使用教學
CocoaPods 使用教學
ShengWen Chiou
掌星 移动互联网开发笔记-Vol001
掌星 移动互联网开发笔记-Vol001
rainx1982
安卓中的设计模式举例 by hjm1fb
安卓中的设计模式举例 by hjm1fb
Albert Hong
打造你專屬的Xcode plugin
打造你專屬的Xcode plugin
Yuhua Chen
Android JNI
Android JNI
艾鍗科技
N bear
N bear
lemoo17
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
My own sweet home!
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
Will Huang
iOS app security
iOS app security
Hokila Jan
開放原始碼作為新事業: 台灣本土經驗談 (COSCUP 2011)
開放原始碼作為新事業: 台灣本土經驗談 (COSCUP 2011)
National Cheng Kung University
LinkIt 7697 開發平台簡介 (Traditional Chinese)
LinkIt 7697 開發平台簡介 (Traditional Chinese)
Bear Wang
2, OCP - installing and creating a database
2, OCP - installing and creating a database
ted-xu
Similar to iOS 入門教學
(20)
ios 5 arc完全指南
ios 5 arc完全指南
Flutter 踩雷心得
Flutter 踩雷心得
Xcode开发员入门导引(简体中文版)
Xcode开发员入门导引(简体中文版)
Xcode开发员入门导引
Xcode开发员入门导引
iOS
iOS
Java Build Tool course in 2011
Java Build Tool course in 2011
01 A Simple iOS Application
01 A Simple iOS Application
Xcode tutorial
Xcode tutorial
CocoaPods 使用教學
CocoaPods 使用教學
掌星 移动互联网开发笔记-Vol001
掌星 移动互联网开发笔记-Vol001
安卓中的设计模式举例 by hjm1fb
安卓中的设计模式举例 by hjm1fb
打造你專屬的Xcode plugin
打造你專屬的Xcode plugin
Android JNI
Android JNI
N bear
N bear
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
iOS app security
iOS app security
開放原始碼作為新事業: 台灣本土經驗談 (COSCUP 2011)
開放原始碼作為新事業: 台灣本土經驗談 (COSCUP 2011)
LinkIt 7697 開發平台簡介 (Traditional Chinese)
LinkIt 7697 開發平台簡介 (Traditional Chinese)
2, OCP - installing and creating a database
2, OCP - installing and creating a database
iOS 入門教學
1.
簡單學會 iOS 開發 Tuesday,
August 13, 13
2.
前⾔言 • 這是我在離開前公司前辦的 TOI
所作的投影 ⽚片 • 對象是三個專精於 Android 開發的⼯工程師 • 所講的內容涵蓋從⼀一開始的⼊入⾨門,編寫範例 程式,然後到如何上架等等。⽤用的名詞是希 望原先熟悉 Java/C++ 的⼯工程師能夠理解為 主 • 內容基於 iOS6 以上 Tuesday, August 13, 13
3.
上架開發註冊 •developer.apple.com •apple ID 開發者帳號 •XCode •Bundle
ID •Provision Profile •XCode •Testflight •⽂文件 •Stackoverflow •XCode •developer.apple.com •iTunes Connect (ITC) Tuesday, August 13, 13
4.
ADN:Apple Developer Network • developer.apple.com •
⽂文件、軟體下載、論壇、問題回報 • ⾦金鑰管理、Certification、Bundle ID、管 理裝置、Provisioning Tuesday, August 13, 13
5.
XCode • 程式編譯執⾏行、專案管理、版本控管(git) • 裝置管理 •
模擬裝置 (Simulator) • Provision,app 散佈 Tuesday, August 13, 13
6.
什麼是 Objective-C • ⼀一個物件導向式的程式語⾔言 •
是⼀一個有 20 年歷史的程式語⾔言,⼤大概跟 C++ 同⼀一年代 • ⻑⾧長得有點像 C ,但不是 C ,但相容 C+ + / C • 雖然舊,但每年 Apple 仍不斷的改善它 • 有 GC,但是 iOS 沒有實作 GC,⽽而是改 ⽤用效能更好的 ARC Tuesday, August 13, 13
7.
什麼是 Objective-C • 物件導向,幾乎都是由物件構成,也經 常套⽤用常⾒見的⼀一些物件導向的設計模式 •
有封裝、繼承、多型、成員函式、成員 變數、成員覆寫等等物件導向特性 • 但是沒有多重繼承,也沒有 private 、 protected 成員,也沒有 java 中的 interface (virtual class)等東⻄西,也沒有 package 跟 namespace Tuesday, August 13, 13
8.
• .h 跟
.m 檔 • .h 檔宣告物件類別 • .m 檔實作物件 • .xib Interface Builder 檔案 • .storyboard storyboard 檔案 Tuesday, August 13, 13
9.
宣告 類別名稱 繼承類別
成員函式宣告 成員變數宣告描述⼦子 型別 變數名稱 Tuesday, August 13, 13
10.
實作類別 實作的類別 函式實作 +
代表類別函式 - 代表成員函式 Tuesday, August 13, 13
11.
類別名稱 呼叫類別函式 呼叫成員函式 物件
呼叫函式 (send message) 參數1 參數2 Tuesday, August 13, 13
12.
幾個關鍵字 • nil :
代表空物件,所有變數在宣告還沒指 定物件之前都是 nil • NSNull 是物件 • YES / NO / True / False • self : 在物件內代表⾃自⼰己。 例如: self.age = 20; 或者 [self callMyFather]; • id : 代表物件型態,通常⽤用來作多型 Tuesday, August 13, 13
13.
還有⼀一些常⾒見的物件 表⽰示 • @”Hello World”;
代表⼀一個 NSString 物件。但 是,“Hello World” 這是⼀一個 c string • @[@”Hello”, @”World”]; 代表⼀一個 NSArray 陣 列物件。 • @{@”key”: @(123)} 代表⼀一個 NSDictionary 雜 湊表物件 • @(23) @(YES), @(NO) 或者 @(32.23) 代表⼀一個 NSNumber 物件 Tuesday, August 13, 13
14.
• NSString *str1
=@”Hello”; • NSString *str2 = @”World”; • if ([str1 isEqaulWithString:str2]) {} Tuesday, August 13, 13
15.
• NSDictionary *dict
= @{@”key”: @”value”}; • NSLog(@”Value is %@”, dict[@”key”]); • dict.keys; dict.values; • NSMutableDictionary *dict = [NSMutableDictionary dictWithDictionary:@{@”key”: @”value”}]; • dict[@”key2”] = @”Value2”; Tuesday, August 13, 13
16.
物件名稱 傳統表⽰示法 新的表⽰示法 NSArray NSArray
* array = [NSArray arrayWithObjects: @”hello”, @”world”, nil]; [array objectAtIndex:12]; NSArray * array = @[@”hello”, @”world”]; array[12]; NSDictionary NSDictionary *dict = [NSDictionary dictionaryWithObjects: @”value1”, @”value2”, nil forKeys: @”key1”, @”key2”, nil]; [dict objectForKey:@”key2”]; NSDictionary *dict = @{@”key1”: @”value1”, @”key2”: @”value2”}; dict[@”key2”]; NSNumber NSNumber *intNum = [NSNumber numberWithInt:12]; NSNumber *boolNum = [NSNumber numberWithBool: NO]; NSNumber *intNum = @(12); NSNumber *boolNum = @(YES); Tuesday, August 13, 13
17.
ARC • Auto Reference
Counting • Obj-C 記憶體管理是採⽤用 Reference Count 原則,當 Reference Count == 0 時,物件就會被釋放 • Before ARC: [obj retain]; [obj release]; • After ARC: [obj retain]; [obj release] • Compile time 技術,Runtime 不卡卡 Tuesday, August 13, 13
18.
ARC • Before ARC: •
@property (retain) UITableView *tableView; • After ARC: • @property (strong) UITableView *tableView • @property (weak) UITableView *tableView; • @property (assign) UIInteger age; Tuesday, August 13, 13
19.
Auto Synthesis • XCode
4.4 之後,不再需要為你的 property 宣告 @synthesize • 所有 property 會⾃自動幫你宣告 setter 跟 getter • @property (strong) UITableView *tbView; • -(UITableView*)tbView; // getter • -(void)setTbView:(UITableView *tbView); // setter • _tbView; // 物件本⾝身 Tuesday, August 13, 13
20.
Block • iOS4 之後新增加的語法 •
Block 是⼀一段程式碼 (實際上是⼀一個物件) • 類似其他語⾔言中 closure 的概念 • 所有在 block 裡⽤用到的物件會⾃自動被 retain • Block 在 stack 中被建⽴立,運作於 heap 裡 • 常⽤用來作 Callback 函式 Tuesday, August 13, 13
21.
Block 宣告 Block
實作 呼叫 Block Callback 的⽤用法 Tuesday, August 13, 13
22.
Block 也可以是 property 記得⽤用 copy
描述⼦子 http://blog.refractalize.org/post/10476042560/copy-vs-retain-for- objective-c-blocks 指定 onOpenHandler 的 內容 Tuesday, August 13, 13
23.
Multi-threads • 很少直接 fork
thread • ⽐比較常⽤用 Queue 的概念管理 thread • NSFoundation: NSOperationQueue • GCD (Grand Central Dispatch) • Concurrent / Serial • Main thread 負責所有 UI 的 update Tuesday, August 13, 13
24.
NSOperationQueue • 可以設定 Queue
size (Concurrent / Serial) • 可以放⼊入⼀一堆 NSOperation 物件,依序 執⾏行 • 可以 Cancel • 可以知道⺫⽬目前還有多少 Operation 尚未 執⾏行 Tuesday, August 13, 13
25.
NSBlockOperation • ⼀一個簡單的 NSOperation
物件 • 讓你可以在 block 裡編寫你想要執⾏行的程 式碼 Tuesday, August 13, 13
26.
GCD • Grand Central
Dispatch (名字來源於紐約中央 ⾞車站) • 系統⽐比較底層的呼叫,讓你可以善⽤用多核 CPU 的好處 • 缺點是,⼀一旦 dispatch 出去,無法取消,你也 無法知道⺫⽬目前有多少 task 尚未執⾏行 • dispatch_async / dispatch_sync • dispatch_get_main_queue() Tuesday, August 13, 13
27.
GCD 最常看的⽤用法 • UI
的變動其實需要在 Main Thread 上執⾏行 • 如果在 background thread ,想要變動 UI 的 話 •經常會⽤用 dispatch_async(dispatch_get_main_queue() ....) Tuesday, August 13, 13
28.
什麼是 Cocoa Framework • Apple
封裝的 SDK Framework Library • 提供各式各樣的 API ,包含 UI、存取裝 置、multithread、資料庫、網路等等 • 除了 Cocoa 外,還有其他許許多多的 Framework • 開發 iOS ⼤大部分都是與 Cocoa 奮戰,但 是很多時候也會⽤用到 OpenSource 或者 3rdParty 的 Library Tuesday, August 13, 13
29.
開發時常⽤用的套件管 理 • cocoapods :
第三⽅方的套件管理程式,⽤用來讓開 發者簡易的引⼊入第三⽅方套件 • 安裝: http://cocoapods.org/ • 使⽤用: • 在⺫⽬目錄下建⽴立跟編輯 Podfile • 執⾏行 pod install 命令安裝想要的套件 • 以後 xcode 都必須開啟 FavClient- iOS.xcworkspace 來修改程式 Tuesday, August 13, 13
30.
IDE 說明 Tuesday, August
13, 13
31.
檔案⺫⽬目 錄結構 Editor Debug ConsoleSymbols Tabs (Command
+ t) Breakpoints Editor 模式切換 中斷程式,單步中斷 Tuesday, August 13, 13
32.
Source Control Tuesday, August
13, 13
33.
Tuesday, August 13,
13
34.
Instrument - Debug
and Performance Tuning Tuesday, August 13, 13
35.
可疑的 peak ! 兇⼿手 Tuesday,
August 13, 13
36.
iOS UI 設計理念 Tuesday,
August 13, 13
37.
• MVC: Model
/View / Controller • View 絕⼤大多數都是繼承於 UIView • Controller 是控制 UI 的核⼼心,絕⼤大多數 都是繼承於 UIViewController Tuesday, August 13, 13
38.
iOS Cocoa Framwork 內建的Views Tuesday,
August 13, 13
39.
常⽤用的 Controllers • UIViewController •
UINavigationController • UITableViewController • UITapBarController Tuesday, August 13, 13
40.
製作⾃自⼰己的 ViewController • New Cocoa-Touch
file • Subclass UIViewController • Create XIB file Tuesday, August 13, 13
41.
ViewController ⽣生命週 期 • loadView •
viewDidLoad • viewWillAppear • viewDidAppear • viewWillDisappear • viewDidDisappear • dealloc Tuesday, August 13, 13
42.
ViewController ⽣生命週 期 • 通常覆寫
viewDidLoad ,並在這 function 裡初始化你要⽤用到的物件跟 view • 如果有動畫要顯⽰示,在 viewDidAppear 中作 Tuesday, August 13, 13
43.
• 如何從⼀一個ViewController 彈出另外⼀一個ViewController •
-(void)presentViewController:(UIViewController*)viewController animated: (BOOL)flag completion:(void (^)(void))completion; • transition styles: Cover vertical, Flipping, Cross Dissolve, Partial Curl • Dismiss ⺫⽬目前的ViewController: • -(void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^) (void))completion Tuesday, August 13, 13
44.
Navigation Controller Navigation Bar View
Controller 1 View Controller 2 View Controller 3 Tuesday, August 13, 13
45.
Navigation Controller • 設定
rootViewController (initWithRootViewController) • pushViewController:animated: • popViewControllerAnimated: • popToRootViewControllerAnimated: Tuesday, August 13, 13
46.
Controller 與View • 通常當你在新增新的
Controller 時, Xcode 會問你要不要順便產⽣生⼀一個 Interface • 意思就是說你可以透過 Interface Builder 來為你新的 Controller 設計 UI • Controller 會在 loadView 時,⾃自動載⼊入 Interface Builder 中所設計的 UI Tuesday, August 13, 13
47.
Interface Builder • Apple
在 Xcode 裡提供的⼯工具,讓你所 ⾒見及所得去編輯設計 UI • 儲存下來的檔案實際上是⼀一個 XML 描述 檔,附檔名為 xib • 所有 iOS 原⽣生的 UI Control 都可以從 Interface builder 中拖拉,決定屬性,跟 ⼤大⼩小顏⾊色等等 Tuesday, August 13, 13
48.
Interface Builder • IB
幫助你設計 UI ,但是當你要針對 UI 元件去控制時,你必須告訴 Xcode ,在 UI 中這些元件是如何對應到你的程式碼 • 這時候會⽤用到 IBOutlet 跟 IBAction 兩個 預設關鍵字 • ⽤用 IBOutlet 去宣告你要使⽤用的 UI 物件 • ⽤用 IBAction 去宣告你希望使⽤用者按下按 鈕所要觸發的函式 Tuesday, August 13, 13
49.
IBOutlet IBAction Tuesday, August 13,
13
50.
連連看 • 在 Interface
Builder 的 connection inspector 中, 會看到 Reference Outlet 是⼀一個空⼼心的圓圈 • 點圓圈,按住左鍵,會拉出⼀一條線拉到 File’s Owner 上,這時候會出現⼀一個選單出現你可以 連結的 IBOutlet,選擇你要的完成連線 • 如果是 Button ,通常我們要 hook “Touch Up Inside” event,這代表使⽤用者按下按鈕。你會在 Connection inspector 的 Touch Up inside 旁看到 ⼀一個空⼼心圓,⼀一樣把它拉到 File’s Owner,這時 候會出現你有宣告的 IBAction ,完成連線 Tuesday, August 13, 13
51.
• 連完之後,Xcode 就知道
Interface Builder 裡,UI 元件跟你程式碼間的關係 了 連線前 連線後Tuesday, August 13, 13
52.
• storyboard 是在
iOS5 引⼊入的新功能 • 主要的作⽤用是可以讓你在同⼀一個檔案中 編輯多個ViewController 的介⾯面,並且描 述他們之間的關係 • storyboard 有助於開發者眾觀整個 UI 的 流程 • 附檔名就是 storyboard storyboard Tuesday, August 13, 13
53.
storyboard • storyboard 操作⽅方式跟
Interface Builder ⼀一樣 • 當然,多了⼀一些東⻄西 ... Tuesday, August 13, 13
54.
TableView • 相當常⾒見的元件 • View
與 Model 設計的標 準範例 • delegate / datasource Tuesday, August 13, 13
55.
⽤用程式加⼊入新的View - (void) viewDidLoad
{ [super viewDidLoad]; CGRect newFrame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); UITableView *tableView = [[UITableView alloc] initWithFrame:newFrame style:UITableViewStylePlain]; tableView.delegate = self; tableView.dataSource = self; [self.view addSubview: tableView]; } Tuesday, August 13, 13
56.
⼀一個簡單的範例 Tuesday, August 13,
13
57.
範例內容 • ⼀一個簡單的 app •
共有三個View Controllers • 彼此之間⽤用 NavigationController 串起來 • TableView Tuesday, August 13, 13
58.
Localization Tuesday, August 13,
13
59.
字串 • NSLocalizedString(@”Message to
show”, @”Comment”); • Build 過⼀一次後,字串會⾃自動加⼊入到 Localizable.strings Tuesday, August 13, 13
60.
字串 • NSLocalizedString(@”Message to
show”, @”Comment”); • Build 過⼀一次後,字串會⾃自動加⼊入到 Localizable.strings Tuesday, August 13, 13
61.
字串 • NSLocalizedString(@”Message to
show”, @”Comment”); • Build 過⼀一次後,字串會⾃自動加⼊入到 Localizable.strings Tuesday, August 13, 13
62.
字串 • NSLocalizedString(@”Message to
show”, @”Comment”); • Build 過⼀一次後,字串會⾃自動加⼊入到 Localizable.strings 翻譯⼈人員要翻 的字串 Tuesday, August 13, 13
63.
xib 怎麼辦? • 三個⽅方法 •
把元件拉出來,在程式裡替換要顯⽰示 的字串 • xib 可以每個語⾔言⼀一份,各⾃自翻譯(缺點 是 maintain 不容易) • ⽤用 3rd party module,例如:https:// github.com/angelolloqui/AGi18n Tuesday, August 13, 13
64.
更改 App Name
跟 Icon Tuesday, August 13, 13
65.
App Name • 變更
InfoPlist.name 檔案,有分不同語 ⾔言,所以不同語⾔言顯⽰示的 app name 可以 不⼀一樣 Tuesday, August 13, 13
66.
App Icon • 要上架的話,請準備
57x57(⾮非 retina) 跟 114x114(retina),1024x1024 尺⼨寸的 icon • 先把圖檔加⼊入到 project 裡 (圖檔要 copy 進 project 的⺫⽬目錄下) • 然後打開 project 設定 > Summary • 把 icon (⾮非 retina 跟 retina) 拉進 App Icons Tuesday, August 13, 13
67.
TestFlight Tuesday, August 13,
13
68.
增加 Build Number •
打開 terminal • 在 project 的⺫⽬目錄下,例如 iOSFavUploader/ • 執⾏行 agvtool bump 命令 • git add . ; git commit -m bump Tuesday, August 13, 13
69.
Testflight • Apple 對於
app 的散佈態度⽐比較嚴謹 • 單⼀一 app 會限制最多 100 台機器可以安裝 • 但是對於⼀一般⼈人(包含測試者),安裝開發 者開發出來的 beta build ⽐比較不容易 • 所以 Testflight 提供⼀一個⽐比較簡易的環境可 以讓你散佈你的 beta build • 不過在 XCode 5.0,這件事情將有所改變 Tuesday, August 13, 13
70.
1. 登⼊入 ADN
(developer.apple.com) 2. 註冊 beta 使⽤用者裝置的 UDID (UDID 取得⽅方 法請看 (http://howto.cnet.com/8301-11310_39-57506702-285/how-to-find-your-ios-devices-udid/) 3. 在 Device 新增加⼀一筆 UDID 4. 編輯你的 Provision Profile ,將該裝置涵蓋到 你的 Provisioning Profile 當中 5. 下載 Provisioning Profile 到你的開發電腦上 Tuesday, August 13, 13
71.
1. XCode: Product
> Archive 2. XCode 會 clean build 你的 app 3. Organizer 會彈出來,點 Distribute 按鈕 4. 選擇 Save for Enterprise or Ad-Hoc Deployment 5. 選擇⼀一個正確的 Provisioning Profile 6. 你會得到⼀一個 ipa 檔 Archive 你的 App Binary Tuesday, August 13, 13
72.
上傳 Testflight 1. 右上⾓角
+ 按鈕,選 Upload Build 2. 上傳 ipa 檔案,填寫 Change logs 3. 選擇要散佈的對象 (如果對⽅方有 testflight 帳號就會直接顯⽰示在上⾯面) 4. 對⽅方會收到信,或者直接上 testflight 網 站就會看到他可以安裝的 build,按 install 即可完成安裝 Tuesday, August 13, 13
73.
App Store 上架⼀一⼆二三 Tuesday,
August 13, 13
74.
簽發你的 App Binary 1)
登⼊入 ADN (developer.apple.com) 2) 簽發 Production Certificate 3) 簽發 App Store Distribution Provisioning Profile 4) 下載 Certificate 跟 Profile Tuesday, August 13, 13
75.
iTunes Connect • iTunes
Connect 跟 iTunes 無關 • 專⾨門⽤用來管理 app 的 submission 跟 marketing 資訊 • https://itunesconnect.apple.com/ WebObjects/iTunesConnect.woa • 有個 iTunes Connect 的 app 可以讓你透 過⼿手機管理 Tuesday, August 13, 13
76.
先在 iTC 註冊你的 App Tuesday,
August 13, 13
77.
1 2 Tuesday, August 13,
13
78.
3 Tuesday, August 13,
13
79.
準備好你的 App Description,
keywords, icons, screenshots(⻑⾧長貓、短貓都要), 測試帳號 (App Reviewer 需要知道怎麼測試你的 app) 基本資料 分級 Tuesday, August 13, 13
80.
Tuesday, August 13,
13
81.
1) XCode: Product
> Archive 2) XCode 會 clean build 你的 app 3) Organizer 會彈出來,點 Distribute 按鈕 4) 選擇 Submit to App Store 5) 選擇⼀一個正確的 Provisioning Profile 6) 驗證 app binary 是否合乎規定,如果不合動作 需重來 7) 會直接上傳到 iTunes Connect Archive 你的 App Binary Tuesday, August 13, 13
82.
Tuesday, August 13,
13
83.
怎麼下架?! • 選擇你要下架的 app •
點選 Rights and Pricing • Deselect 所有國家的 app store • Save Tuesday, August 13, 13
84.
追蹤下載情況 • 點 Sales
and Trends • 基本上很陽春, 提供基本功能⽽而已 • 其他 tracking 的 3rd-party ⼯工具 (都可以⽤用 cocoapods 安裝): • Google Analytics • Flurry (http://www.flurry.com) Tuesday, August 13, 13
85.
Crash Report • app
送出去 crash 了怎麼辦? • 可以透過 Crashlytics 的服務來收 crash report ,進⽽而改進程式穩定度 • Crashlytics 現在隸屬於 twitter ,是⼀一個 漂亮好⽤用的 crash report ⼯工具 Tuesday, August 13, 13
86.
其他資源 Tuesday, August 13,
13
87.
• Stanford CS193p
課程 • https://itunes.apple.com/us/course/coding- together-developing/id593208016 • 教學: http://www.raywenderlich.com/tutorials • 歷年 WWDC 影⽚片: • https://developer.apple.com/wwdc/videos/ • https://developer.apple.com/videos/wwdc/2012/ Tuesday, August 13, 13
88.
• Cocoa Design
Patterns: http://www.amazon.com/Cocoa-Design-Patterns- Erik-Buck/dp/0321535022/ref=sr_1_1? ie=UTF8&qid=1376278359&sr=8-1&keywords=cocoa+design+patterns • iOS Programming - The Big Nerd Ranch Guides: http://www.amazon.com/ iOS-Programming-Ranch-Edition-Guides/dp/0321821521/ref=sr_1_3? ie=UTF8&qid=1376278374&sr=8-3&keywords=cocoa+design+patterns Tuesday, August 13, 13
Download now