SlideShare a Scribd company logo
Objective-C http://MobileDev.TW
iOS APP Developer
Objective-C 語法入門
Ryan@MobileDev.TW
1
Objective-C http://MobileDev.TW
大綱
1.  Hello Objective-C! Xcode環境認識
2.  Objective-C語法類別、物件與方法
1)  從一個簡單的分數開始
2)  來寫一個計算機
3)  再論類別
3.  繼承的概念
4.  CategoryProtocol 
5.  Framework
6.  資料型態 id
7.  星號與初始化
2
Objective-C http://MobileDev.TW
1.HELLO OBJECTIVE-C!XCODE環境認識
3
Objective-C http://MobileDev.TW
步驟1/4
1.  打開Xcode - Create a new Xcode project
4
Objective-C http://MobileDev.TW
步驟2/4
2.OS X-Application,選Command Line Tool,Next
5
Objective-C http://MobileDev.TW
Xcode的樣板專案分類
6
Objective-C http://MobileDev.TW
步驟3/4
3.  輸入HelloXcode,Type為foundation (Language:ObjC),Next
7
Objective-C http://MobileDev.TW
步驟4/4
4.  直接Run就可以在output看到Hello, World!
8
Objective-C http://MobileDev.TW
重點理解
1.  main是程式的進入點
2.  @autoreleasepool使用自動記憶體機制進行釋放
3.  利用NSLog來輸出資訊於console
9
Objective-C http://MobileDev.TW
What is NSLog?
游標放在NSLog上,按下alt,看到問號後按下滑鼠左鍵
10
Objective-C http://MobileDev.TW
修改NSLog輸出運算結果
11
Format Specifiers
http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/
Articles/formatSpecifiers.html
Objective-C http://MobileDev.TW
NSLog的描述邏輯
固定的內容直接寫上,變動的部分標上資料類別,然
後排列在後方
12
Objective-C http://MobileDev.TW
NSLog Specifier
13
Objective-C http://MobileDev.TW
NSLog Specifier
14
Objective-C http://MobileDev.TW
NSLog Specifier
15
Objective-C http://MobileDev.TW
You should got it NOW
•  Xcode可以製作哪些種類的應用程式
•  如何查閱進一步解釋
•  如何跳至匯入程式碼的原始位置
•  如何使用NSLog顯示變數的值

16
Objective-C http://MobileDev.TW
2.OBJECTIVE-C語法:類別、物件與方法
17
Objective-C http://MobileDev.TW
2-1.從一個簡單的分數開始
18
Objective-C http://MobileDev.TW
目前我們透過直接給值來顯示分數
指定固定的分子與分母
19
Objective-C http://MobileDev.TW
顯示一個分數
20
結果
Objective-C http://MobileDev.TW
現在我們希望蓋一間工廠,給它分子
與分母,它就產生分數給我們
類別的初體驗
21
Objective-C http://MobileDev.TW
建立類別
•  建立一個運算分數的類別
•  裡面有分子、分母
•  有輸入分子的方法
•  有輸入分母的方法
•  有輸出結果的方法
22
類別就像是生產工廠的運
作機制,建立了類別,就
可以根據這個類別,創造
出一個個的物件來使用。
Objective-C http://MobileDev.TW
類別宣告
23
Objective-C http://MobileDev.TW
類別方法實作
24
Objective-C http://MobileDev.TW
Objective-C 術語小字典:iVar
•  實體變數(instance variable)
•  簡稱 iVar
•  相當於一個類別中的屬性定義
25
就像是一個工廠的儲
存空間。

在設計類別時,需要
思考有哪些東西需要
一個儲存空間,這些
東西會被各個運作部
門所使用。
Objective-C http://MobileDev.TW
物件方法與類別方法
•  物件方法必須使用在實體的物件上
•  物件方法前面是減號,類別方法前面是加號
26
Objective-C http://MobileDev.TW
蓋一間工廠,需要說明有哪些成員、
裡面有哪些機器在運作,然後再實際
把這些機器的運作流程都描述清楚
你給我豬肉,我給你香腸
27
Objective-C http://MobileDev.TW
主程式
28
結果
Objective-C http://MobileDev.TW
開始使用Objective-C最美的部分
[ClassOrInstance method];
呼叫某個類別或物件的方法,也像是給予該類別或物
件一個訊息:
[receiver message];

29
Objective-C http://MobileDev.TW
2-1-1.撰寫同名的方法存取IVAR
這些方法只是為了取得iVar的值或是寫入iVar的值而存在
30
Objective-C http://MobileDev.TW
2-1-1.撰寫同名的方法存取iVar
31
Objective-C http://MobileDev.TW
撰寫同名的方法存取iVar
32
Objective-C http://MobileDev.TW
撰寫同名的方法存取iVar
33
結果
Objective-C http://MobileDev.TW
2-2.來寫一個計算機!
讓我們一起再蓋一間更完善的工廠吧
34
Objective-C http://MobileDev.TW
2-2.來寫一個計算機!
•  建立一個計算機類別,裡面放一個iVar來儲存結果
•  跟結果相關的方法
•  設定結果
•  清除結果
•  取出結果
•  計算用的方法
•  加法
•  減法
•  乘法
•  除法
35
Objective-C http://MobileDev.TW
宣告類別
36
Objective-C http://MobileDev.TW
方法實作
37
Objective-C http://MobileDev.TW
主程式
38
結果
Objective-C http://MobileDev.TW
2-3.再論類別
39
Objective-C http://MobileDev.TW
全部都寫在一起,萬一程式碼很多怎麼辦
拆解類別的宣告與實作,放在不同的檔案中
40
Objective-C http://MobileDev.TW
用檔案來區分用途
•  全部寫在一起難以
管理
•  將每一組interface
與implentation分
開儲存:
•  .h檔:類別宣告
•  .m檔:類別方法實作
41
@inerface A:NSObject
….
@end
@implentation A
….
@end
@inerface B:NSObject
….
@end
@implentation B
….
@end
@inerface C:NSObject
….
@end
@implentation C
….
@end
A.h
A.m
B.h
B.m
C.h
C.m
Objective-C http://MobileDev.TW
2-3-1.類別宣告跟方法實作分開
Fraction.h
42
Objective-C http://MobileDev.TW
類別宣告跟方法實作分開
Fraction.m
43
Objective-C http://MobileDev.TW
類別宣告跟方法實作分開
main.m
44
Objective-C http://MobileDev.TW
2-3-1-1.如何增加檔案?
Step1.點選Project,滑鼠右鍵,New File…
45
Objective-C http://MobileDev.TW
如何增加檔案?
Step2.決定要製作的檔案類型,再按下Next
46
Objective-C http://MobileDev.TW
如何增加檔案?
Step3.決定類別名稱,繼承自誰,然後按下Next
47
Objective-C http://MobileDev.TW
如何增加檔案?
Step4.決定儲存位置後,就會產生.h與.m檔,使用時
記得匯入
48
.h:宣告
.m:實作
Objective-C http://MobileDev.TW
2-3-1-2.再論類別與物件
•  設計類別作為模板,用類別來創造實體物件
•  在.h檔中設計類別,放置於@interface與@end中
•  實體變數(instance variables)
•  相當於一個類別中的屬性定義
•  方法
•  該類別可以操作的功能
49
Objective-C http://MobileDev.TW
2-3-2.自動產生SETTER與GETTER
每一個iVar如果都要撰寫對應的Setter與Getter,太麻煩了
50
Objective-C http://MobileDev.TW
2-3-2.自動產生Setter與Getter
•  在Fraction.h中加入
51
•  在Fraction.m中加入
•  加了這兩句,就會自動產生了
•  Getter:numerator,denominator
•  Setter:setNumerator,setDenominator
Objective-C http://MobileDev.TW
Lab
試著用上述的方法,並且將原先撰寫的Setter、Gette
r方法拿掉,看看是否還能正常運作
52
Objective-C http://MobileDev.TW
2-3-2-1.自動產生Synthesize
•  開發環境版本:Xcode4.5+iOS6之後
•  建立@property後,自動產生@synthesize
•  自動建立成 @synthesize ivarName=_ivarName;
•  在類別中,直接透過 _ivarName或self.ivarName
直接存取
•  在其他運作流程中,用objName.ivarName來存取
53
Objective-C http://MobileDev.TW
2-3-2-2.另一種撰寫方式:點運算子
簡單直覺,比較接近其他語言的撰寫方式
54
Objective-C http://MobileDev.TW
Dot Operator:可存可取
[myFraction numerator]
is equal to 
myFraction.numerator
55
[myFraction setNumerator : 1]
is equal to 
myFraction.numerator=1
Objective-C http://MobileDev.TW
點運算子與[ ]混用
[[myAppObject theArray] insertObject:[myAppObject objectToInsert] atIndex:0];
--
[myAppObject.theArray insertObject:[myAppObject objectToInsert] atIndex:0];

[myAppObject setTheArray:aNewArray];
--
myAppObject.theArray = aNewArray;






56
Objective-C http://MobileDev.TW
2-3-2-3.Property與Synthesize
•  取代了一般的宣告,並且實作了存取方法
•  實作時使用@synthesize (Xcode4.5後自動產生)

57
Objective-C http://MobileDev.TW
2-3-3.接收多個變數的方法
Objective-C另一個美麗的設計
58
Objective-C http://MobileDev.TW
2-3-3.接收多個變數的方法
宣告
59
實作
主程式使用
Objective-C http://MobileDev.TW
方法的語法
-(void) setMake:(NSString *) aMake andModel:(NSString *) aModel andYear:(int) aYear;
此方法的名稱為:setMake:andModel:andYear:
用C的方法寫長這樣:
setMake:andModel:andYear(NSString* aMake,NSString *aModel, int aYear);

缺點:語法複雜
優點:可以看得出來每個變數的用途
方法名稱在Objective-C又稱為選擇器(selector)

60
Objective-C http://MobileDev.TW
2-3-4.SELF關鍵字
在自己的類別中,一個方法想要呼叫另一個方法來幫忙
61
Objective-C http://MobileDev.TW
self 關鍵字
•  使用self關鍵字來指定本身這個物件
•  在add方法中使用self來呼叫同物件中的其他方法
62
Objective-C http://MobileDev.TW
You should got it NOW
•  類別、物件與方法,想想工廠的運作
•  什麼是iVar? iVar的存取方式的進化
•  自己寫同名方法
•  自動產生
•  自動產生Synthesize
•  點運算子怎麼用
•  接收多個變數的方法怎麼寫、怎麼用?
•  self關鍵字是什麼,什麼時機會用到?
63
Objective-C http://MobileDev.TW
3.繼承的概念
從0開始太累了,借用前人種的樹吧!
64
Objective-C http://MobileDev.TW
3-1.運用繼承再客製化類別
•  設計一個正方形類別
1.  若原先已經有矩形類別,那就繼承它,創一個正方形類別
2.  再增加正方形需要用的屬性與方法
3.  正方形這個類別,可以使用矩形類別中的屬性與方法

65
矩形類別
iVar Ra;
iVar Rb;

Method R1;
Method R2;

正方形類別	 :	 矩形類別
iVar Ra;
iVar Rb;
Method R1;
Method R2;
iVar Sa;
iVar Sb;
Method S1;
Method S2;
Objective-C http://MobileDev.TW
3-2.繼承的運作
•  父類別的所有實體變數與方法,都會成為子類別定
義的一部份。
•  子類別可以直接存取這些方法與實體變數。
•  首先會先確認該變數或方法是否存在目前物件的類
別定義中,若沒有,則會往父類別去尋找。
66
Objective-C http://MobileDev.TW
4.CATEGORY AND PROTOCOL
跨越類別的溝通方式,在對的時間,讓對的人來做對的事
67
Objective-C http://MobileDev.TW
4-1.CATEGORY
只是增加幾個方法,不用勞師動眾生個孩子出來
68
Objective-C http://MobileDev.TW
4-1.Category
•  擴充現有類別的定義,不須建立一個新的子類別
69
Objective-C http://MobileDev.TW
Category
•  例:在NSString加入一個新的方法
70
Objective-C http://MobileDev.TW
Category的特性
•  不能增加實體變數,只能增加方法
•  可以覆蓋方法,但是不能使用super
•  不用實作所有方法
•  影響範圍包含其所屬的子類別
71
Objective-C http://MobileDev.TW
4-2.協定PROTOCOL
時候未到,沒人知道,託人辦事,規矩要了
72
Objective-C http://MobileDev.TW
4-2協定 Protocol
•  類別間分享方法的清單
•  甲方:定義協定(宣告方法)
•  乙方:採納協定(實作方法)
73
Objective-C http://MobileDev.TW
4-2-1.定義協定
@protocol 協定名稱
宣告方法
@end
74
例如,在NSObject.h中,定義了NSCopying協定
Objective-C http://MobileDev.TW
4-2-2.採納協定
•  要實作的類別,則稱為遵從(conform)或採納(adopt
)該協定
•  在@interface後面加上協定
•  在@interface中不用再宣告協定中的方法,但在實
作區段中必須定義他們
75
Objective-C http://MobileDev.TW
You should got it NOW
•  Category的使用時機
•  Protocol如何定義
•  Protocol如何遵循
76
Objective-C http://MobileDev.TW
5.FRAMEWORK
原廠給的、外面來的,這些積木幫你省去很多麻煩
77
Objective-C http://MobileDev.TW
5-1.什麼是Framework
•  Framework
•  泛指能夠簡化開發程序的一堆類別、方法、函數與文
件的集合。
•  Foundation Framework
•  提供一切基礎所需的framework,如數字、字串處理
、陣列、dictionary、日期時間、檔案系統等等。
•  Application Kit Framework
•  用來開發互動的圖形化應用程式
•  提供文字、選單、工具列、表格等等。
78
Objective-C http://MobileDev.TW
5-2.Cocoa 與 Cocoa Touch
•  Cocoa
•  Foundation Framework
•  Application Kit Framework
•  Core Data
•  Cocoa Touch
•  Foundation Framework
•  UIKit Framework
•  Game Kit Framework 
•  iAD Framework
•  Map Kit Framework
79
Objective-C http://MobileDev.TW
6.資料型態 ID
有些事情,時候未到,真的沒人知道
80
Objective-C http://MobileDev.TW
資料型態 id
使用id來宣告不確定型態的物件
MyClass *myObject1;
id myObject2;
81
Objective-C http://MobileDev.TW
id這麼好用,為什麼不全部宣告為id?
•  宣告為特定資料形態者,稱之為靜態型別
•  int x=5;
•  靜態型別在編譯期間,即會檢查被呼叫的方法,若
無該方法,此時就會提出警告
•  及早防範程式錯誤
•  增加程式的可讀性
82
Objective-C http://MobileDev.TW
7.星號與初始化
很多人常問,大家一起來看看
83
Objective-C http://MobileDev.TW
Q1.什麼時候要用*號?
•  Objective-C所有的物件都是透過指標的方式來找
到該位址,並進行存取。
•  而沒有使用指標的通常是C語言的原始型別(Primitive
type)
•  字元 char
•  整數 int、short、long
•  浮點數 float、double
•  布林值 BOOL
84
Objective-C http://MobileDev.TW
在Objectiv-C中可以使用C的基本型別
直接拿來用
85
int someInteger = 42;
float someFloatingPointNumber = 3.1415;
double someDoublePrecisionFloatingPointNumber = 6.02214199e23;
int someInteger = 42;
someInteger++; // someInteger == 43
someInteger--; // someInteger == 42
someInteger *= 2; // someInteger == 84
所以也可以用C語言的operator
Objective-C http://MobileDev.TW
Objectice-C本身也提供了額外的一些基本型別
•  BOOL
•  NSInteger、NSUInteger、CGFloat
86
Objective-C http://MobileDev.TW
用C語言的struct來持有基本型別的值
用NSRange結構來持有一個字串的位置與長度
87
NSString *mainString = @This is a long string;
NSRange substringRange = [mainString rangeOfString:@long];
typedef struct _NSRange {
NSUInteger location;
NSUInteger length;
} NSRange;
位置:10
長度:4
Objective-C http://MobileDev.TW
物件也可以用來呈現基本型別的數值
用NSString物件來存放字串
88
NSString *firstString = [[NSString alloc] initWithCString:Hello World!
encoding:NSUTF8StringEncoding];
NSString *secondString = [NSString stringWithCString:Hello World!
encoding:NSUTF8StringEncoding];
NSString *thirdString = @Hello World!;
Objective-C http://MobileDev.TW
用NSNumber物件來持有各種基本型別的數值
char,double,float,int,long,short,….都可持有
89
NSNumber *magicNumber = [[NSNumber alloc] initWithInt:42];
NSNumber *unsignedNumber = [[NSNumber alloc] initWithUnsignedInt:42u];
NSNumber *longNumber = [[NSNumber alloc] initWithLong:42l];
NSNumber *boolNumber = [[NSNumber alloc] initWithBOOL:YES];
NSNumber *simpleFloat = [NSNumber numberWithFloat:3.14f];
NSNumber *betterDouble = [NSNumber numberWithDouble:3.1415926535];
NSNumber *someChar = [NSNumber numberWithChar:'T'];
也可從物件中取出基本型別的值餵給C語言的型別
int scalarMagic = [magicNumber intValue];
unsigned int scalarUnsigned = [unsignedNumber unsignedIntValue];
long scalarLong = [longNumber longValue];
BOOL scalarBool = [boolNumber boolValue];
float scalarSimpleFloat = [simpleFloat floatValue];
double scalarBetterDouble = [betterDouble doubleValue];
char scalarChar = [someChar charValue];
Objective-C http://MobileDev.TW
用NSNumber物件來持有各種基本型別的數值
90
當然也可從物件中取出基本型別的值,
餵給Objective-C語言的基本型別
NSInteger anInteger = 64;
NSUInteger anUnsignedInteger = 100;
NSNumber *firstInteger = [[NSNumber alloc] initWithInteger:anInteger];
NSNumber *secondInteger = [NSNumber numberWithUnsignedInteger:anUnsignedInteger];
NSInteger integerCheck = [firstInteger integerValue];
NSUInteger unsignedCheck = [secondInteger unsignedIntegerValue];
Objective-C http://MobileDev.TW
Q2.什麼時候要alloc  init?
•  每一個物件基本上都需要,但是有些類別方法本身
已經包含有配置與初始化,初學者會誤以為沒有做
這個動作。
91
Objective-C http://MobileDev.TW
程式設計基礎 – 使用OBJECTIVE-C
凡事起頭難
92
Objective-C http://MobileDev.TW
變數
•  每一種資料的型態不同,需要的儲存空間也不同
•  常用的資料型態
•  C語言
•  int
•  float
•  char
•  Objective-C語言
•  NSString
•  NSInteger
•  NSDate
93
Objective-C http://MobileDev.TW
常用的程式邏輯(1)如果
•  請撰寫一小段程式,讓使用者輸入姓名與性別
•  如果使用者是男生,請顯示:你好!XXX
•  否則,請顯示:妳好!XXX
94
Objective-C http://MobileDev.TW
常用的程式邏輯(1)如果
95
Objective-C http://MobileDev.TW
常用的程式邏輯(1)如果
•  if…else if…else
•  修改範例為:
•  請使用者輸入性別:(男生 1 女生 2 不願透露 3)
•  男生 – 你好
•  女生 – 妳好
•  不透露 – 哈囉
96
Objective-C http://MobileDev.TW
常用的程式邏輯(2)重複性
•  找到事物重複的規律,讓電腦幫你完成
•  在很久很久以前,有位勇士救了國王的女兒,國王想獎勵他,
就說,你可以提一個願望,我會滿足你。這位勇士對國王說:
我的要求很小,請您拿一個棋盤,在第1個格子裡放1粒米,在第
2個格子裡放2粒米,第3個格子裡放4粒米…. 以此類推,每到下
一個格子就增加一倍。直到將這六十四個格子全部放完。我的
要求就這樣。 國王聽了功臣的要求之後哈哈大笑:你的要求如
此簡單,太小看國王了,再提一個願望,勇士很謙虛地說:謝
謝國王,您能滿足我這個要求我就心滿意足了...... 
•  請問:
•  第64個格子要放幾粒米?
•  國王一共要給勇士幾粒米?
97
Objective-C http://MobileDev.TW
常用的程式邏輯(2)重複性
98
Objective-C http://MobileDev.TW
常用的程式邏輯(2)重複性
99

More Related Content

PPTX
Ecma script edition5-小试
PPT
Introduction to C++ over CLI
PPTX
認識 C++11 新標準及使用 AMP 函式庫作平行運算
PPTX
2, object oriented programming
PDF
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
PDF
C++11 smart pointers
PPTX
Dev307
PDF
05 MapKit and Text Input
Ecma script edition5-小试
Introduction to C++ over CLI
認識 C++11 新標準及使用 AMP 函式庫作平行運算
2, object oriented programming
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
C++11 smart pointers
Dev307
05 MapKit and Text Input

What's hot (20)

PDF
Java 開發者的函數式程式設計
PDF
炎炎夏日學 Android 課程 - Part1: Kotlin 語法介紹
PPTX
Intro to C++ Basic
DOC
《Java程序设计》期末考试试题 (六)
PDF
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
PPTX
Javascript share
PPT
Java SE 8 技術手冊第 12 章 - Lambda
PDF
千呼萬喚始出來的 Java SE 7
PPTX
jQuery源码学习
PDF
getPDF.aspx
PPT
Java Script 引擎技术
DOC
Java考试试题
PDF
型態與運算子
PPTX
Python面向对象开发基础篇
PPT
ajax_onlinemad
PDF
02 Objective-C
PDF
潜力无限的编程语言Javascript
PDF
OOP in C - Virtual Function (Chinese Version)
PPTX
ES5 introduction
PDF
Gobject - Inherit (Chinese)
Java 開發者的函數式程式設計
炎炎夏日學 Android 課程 - Part1: Kotlin 語法介紹
Intro to C++ Basic
《Java程序设计》期末考试试题 (六)
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Javascript share
Java SE 8 技術手冊第 12 章 - Lambda
千呼萬喚始出來的 Java SE 7
jQuery源码学习
getPDF.aspx
Java Script 引擎技术
Java考试试题
型態與運算子
Python面向对象开发基础篇
ajax_onlinemad
02 Objective-C
潜力无限的编程语言Javascript
OOP in C - Virtual Function (Chinese Version)
ES5 introduction
Gobject - Inherit (Chinese)
Ad

Similar to Programming in Objective-C (20)

PDF
Android Studio NDK(JNI) + OpenCV 完整教學
PDF
PDF
PDF
PDF
PDF
PDF
Asp.net mvc網站的從無到有
PDF
SeaJS 那些事儿
PDF
Xcode开发员入门导引
PDF
Xcode开发员入门导引(简体中文版)
PDF
嵌入式測試驅動開發
PDF
Supersonic Subatomic Quarkus accelerate cloud native development
PDF
twMVC#22 | 一個微信專案從0到.000的效能調教之路
PDF
twMVC#02 | ASP.NET MVC 從無到有
PDF
Asp.net mvc 從無到有 -twMVC#2
PPTX
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
PPT
Bluemix Node-Red Part II
PDF
IDE for micro:bit
PDF
如何在實務上使用TDD來開發 twmvc#12
DOC
物件導向程式設計課程講義(98 ges hi版)
Android Studio NDK(JNI) + OpenCV 完整教學
Asp.net mvc網站的從無到有
SeaJS 那些事儿
Xcode开发员入门导引
Xcode开发员入门导引(简体中文版)
嵌入式測試驅動開發
Supersonic Subatomic Quarkus accelerate cloud native development
twMVC#22 | 一個微信專案從0到.000的效能調教之路
twMVC#02 | ASP.NET MVC 從無到有
Asp.net mvc 從無到有 -twMVC#2
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
Bluemix Node-Red Part II
IDE for micro:bit
如何在實務上使用TDD來開發 twmvc#12
物件導向程式設計課程講義(98 ges hi版)
Ad

More from Ryan Chung (20)

PDF
Voice-First Games for Alexa
PDF
AI Service Integration - Education
PDF
AI Service Integration
PDF
AI Adoption in the Enterprise
PDF
Intro to Dialogflow Chatbot Development
PDF
AI in Classroom
PDF
AWS re:Invent 2018 Recap
PDF
MovieBot
PDF
Service Integration Workshop
PDF
MPP AI
PDF
Smart Home Intro Lab
PDF
Introduction to DialogFlow
PDF
Conversational AI Orientation
PDF
Udacity Meet Up - 0413
PDF
Amazon Alexa Development Part II
PDF
Amazon Alexa Development
PDF
Microsoft Professional Program - AI
PDF
AI Service Integration
PDF
Intro to AI
PDF
Hour of Code - Amazon Alexa
Voice-First Games for Alexa
AI Service Integration - Education
AI Service Integration
AI Adoption in the Enterprise
Intro to Dialogflow Chatbot Development
AI in Classroom
AWS re:Invent 2018 Recap
MovieBot
Service Integration Workshop
MPP AI
Smart Home Intro Lab
Introduction to DialogFlow
Conversational AI Orientation
Udacity Meet Up - 0413
Amazon Alexa Development Part II
Amazon Alexa Development
Microsoft Professional Program - AI
AI Service Integration
Intro to AI
Hour of Code - Amazon Alexa

Programming in Objective-C