SlideShare a Scribd company logo
1 of 99
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

What's hot

Java 開發者的函數式程式設計
Java 開發者的函數式程式設計Java 開發者的函數式程式設計
Java 開發者的函數式程式設計Justin Lin
 
炎炎夏日學 Android 課程 - Part1: Kotlin 語法介紹
炎炎夏日學 Android 課程 -  Part1: Kotlin 語法介紹炎炎夏日學 Android 課程 -  Part1: Kotlin 語法介紹
炎炎夏日學 Android 課程 - Part1: Kotlin 語法介紹Johnny Sung
 
Intro to C++ Basic
Intro to C++ BasicIntro to C++ Basic
Intro to C++ BasicShih Chi Lin
 
《Java程序设计》期末考试试题 (六)
《Java程序设计》期末考试试题 (六)《Java程序设计》期末考试试题 (六)
《Java程序设计》期末考试试题 (六)jane2006
 
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫Justin Lin
 
Javascript share
Javascript shareJavascript share
Javascript shareXu Mac
 
Java SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - LambdaJava SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - LambdaJustin Lin
 
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7Justin Lin
 
jQuery源码学习
jQuery源码学习jQuery源码学习
jQuery源码学习fangdeng
 
Java Script 引擎技术
Java Script 引擎技术Java Script 引擎技术
Java Script 引擎技术bigqiang zou
 
Java考试试题
Java考试试题Java考试试题
Java考试试题yiditushe
 
型態與運算子
型態與運算子型態與運算子
型態與運算子Justin Lin
 
Python面向对象开发基础篇
Python面向对象开发基础篇Python面向对象开发基础篇
Python面向对象开发基础篇modou li
 
ajax_onlinemad
ajax_onlinemadajax_onlinemad
ajax_onlinemadKitor23
 
02 Objective-C
02 Objective-C02 Objective-C
02 Objective-CTom Fan
 
潜力无限的编程语言Javascript
潜力无限的编程语言Javascript潜力无限的编程语言Javascript
潜力无限的编程语言Javascriptjay li
 
OOP in C - Virtual Function (Chinese Version)
OOP in C - Virtual Function (Chinese Version)OOP in C - Virtual Function (Chinese Version)
OOP in C - Virtual Function (Chinese Version)Kai-Feng Chou
 
ES5 introduction
ES5 introductionES5 introduction
ES5 introductionotakustay
 
Gobject - Inherit (Chinese)
Gobject - Inherit (Chinese)Gobject - Inherit (Chinese)
Gobject - Inherit (Chinese)Kai-Feng Chou
 

What's hot (20)

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

Similar to Programming in Objective-C

Android Studio NDK(JNI) + OpenCV 完整教學
Android Studio NDK(JNI) + OpenCV 完整教學Android Studio NDK(JNI) + OpenCV 完整教學
Android Studio NDK(JNI) + OpenCV 完整教學Wei-Xiang Wang
 
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Wade Huang
 
SeaJS 那些事儿
SeaJS 那些事儿SeaJS 那些事儿
SeaJS 那些事儿lifesinger
 
Xcode开发员入门导引(简体中文版)
Xcode开发员入门导引(简体中文版)Xcode开发员入门导引(简体中文版)
Xcode开发员入门导引(简体中文版)babyyellow li
 
Xcode开发员入门导引
Xcode开发员入门导引Xcode开发员入门导引
Xcode开发员入门导引Sophia Lindsey
 
嵌入式測試驅動開發
嵌入式測試驅動開發嵌入式測試驅動開發
嵌入式測試驅動開發hugo lu
 
Supersonic Subatomic Quarkus accelerate cloud native development
Supersonic Subatomic Quarkus accelerate cloud native developmentSupersonic Subatomic Quarkus accelerate cloud native development
Supersonic Subatomic Quarkus accelerate cloud native developmentRyan ZhangCheng
 
twMVC#22 | 一個微信專案從0到.000的效能調教之路
twMVC#22 | 一個微信專案從0到.000的效能調教之路twMVC#22 | 一個微信專案從0到.000的效能調教之路
twMVC#22 | 一個微信專案從0到.000的效能調教之路twMVC
 
Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2twMVC
 
twMVC#02 | ASP.NET MVC 從無到有
twMVC#02 | ASP.NET MVC 從無到有twMVC#02 | ASP.NET MVC 從無到有
twMVC#02 | ASP.NET MVC 從無到有twMVC
 
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境Will Huang
 
Bluemix Node-Red Part II
Bluemix Node-Red Part IIBluemix Node-Red Part II
Bluemix Node-Red Part IIJoseph Chang
 
如何在實務上使用TDD來開發 twmvc#12
如何在實務上使用TDD來開發 twmvc#12如何在實務上使用TDD來開發 twmvc#12
如何在實務上使用TDD來開發 twmvc#12twMVC
 
物件導向程式設計課程講義(98 ges hi版)
物件導向程式設計課程講義(98 ges hi版)物件導向程式設計課程講義(98 ges hi版)
物件導向程式設計課程講義(98 ges hi版)Hui-Shih Leng
 

Similar to Programming in Objective-C (20)

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

More from Ryan Chung

Voice-First Games for Alexa
Voice-First Games for AlexaVoice-First Games for Alexa
Voice-First Games for AlexaRyan Chung
 
AI Service Integration - Education
AI Service Integration - EducationAI Service Integration - Education
AI Service Integration - EducationRyan Chung
 
AI Service Integration
AI Service IntegrationAI Service Integration
AI Service IntegrationRyan Chung
 
AI Adoption in the Enterprise
AI Adoption in the EnterpriseAI Adoption in the Enterprise
AI Adoption in the EnterpriseRyan Chung
 
Intro to Dialogflow Chatbot Development
Intro to Dialogflow Chatbot DevelopmentIntro to Dialogflow Chatbot Development
Intro to Dialogflow Chatbot DevelopmentRyan Chung
 
AI in Classroom
AI in ClassroomAI in Classroom
AI in ClassroomRyan Chung
 
AWS re:Invent 2018 Recap
AWS re:Invent 2018 RecapAWS re:Invent 2018 Recap
AWS re:Invent 2018 RecapRyan Chung
 
Service Integration Workshop
Service Integration WorkshopService Integration Workshop
Service Integration WorkshopRyan Chung
 
Smart Home Intro Lab
Smart Home Intro LabSmart Home Intro Lab
Smart Home Intro LabRyan Chung
 
Introduction to DialogFlow
Introduction to DialogFlow Introduction to DialogFlow
Introduction to DialogFlow Ryan Chung
 
Conversational AI Orientation
Conversational AI OrientationConversational AI Orientation
Conversational AI OrientationRyan Chung
 
Udacity Meet Up - 0413
Udacity Meet Up - 0413Udacity Meet Up - 0413
Udacity Meet Up - 0413Ryan Chung
 
Amazon Alexa Development Part II
Amazon Alexa Development Part IIAmazon Alexa Development Part II
Amazon Alexa Development Part IIRyan Chung
 
Amazon Alexa Development
Amazon Alexa DevelopmentAmazon Alexa Development
Amazon Alexa DevelopmentRyan Chung
 
Microsoft Professional Program - AI
Microsoft Professional Program - AIMicrosoft Professional Program - AI
Microsoft Professional Program - AIRyan Chung
 
AI Service Integration
AI Service IntegrationAI Service Integration
AI Service IntegrationRyan Chung
 
Hour of Code - Amazon Alexa
Hour of Code - Amazon AlexaHour of Code - Amazon Alexa
Hour of Code - Amazon AlexaRyan Chung
 

More from Ryan Chung (20)

Voice-First Games for Alexa
Voice-First Games for AlexaVoice-First Games for Alexa
Voice-First Games for Alexa
 
AI Service Integration - Education
AI Service Integration - EducationAI Service Integration - Education
AI Service Integration - Education
 
AI Service Integration
AI Service IntegrationAI Service Integration
AI Service Integration
 
AI Adoption in the Enterprise
AI Adoption in the EnterpriseAI Adoption in the Enterprise
AI Adoption in the Enterprise
 
Intro to Dialogflow Chatbot Development
Intro to Dialogflow Chatbot DevelopmentIntro to Dialogflow Chatbot Development
Intro to Dialogflow Chatbot Development
 
AI in Classroom
AI in ClassroomAI in Classroom
AI in Classroom
 
AWS re:Invent 2018 Recap
AWS re:Invent 2018 RecapAWS re:Invent 2018 Recap
AWS re:Invent 2018 Recap
 
MovieBot
MovieBotMovieBot
MovieBot
 
Service Integration Workshop
Service Integration WorkshopService Integration Workshop
Service Integration Workshop
 
MPP AI
MPP AIMPP AI
MPP AI
 
Smart Home Intro Lab
Smart Home Intro LabSmart Home Intro Lab
Smart Home Intro Lab
 
Introduction to DialogFlow
Introduction to DialogFlow Introduction to DialogFlow
Introduction to DialogFlow
 
Conversational AI Orientation
Conversational AI OrientationConversational AI Orientation
Conversational AI Orientation
 
Udacity Meet Up - 0413
Udacity Meet Up - 0413Udacity Meet Up - 0413
Udacity Meet Up - 0413
 
Amazon Alexa Development Part II
Amazon Alexa Development Part IIAmazon Alexa Development Part II
Amazon Alexa Development Part II
 
Amazon Alexa Development
Amazon Alexa DevelopmentAmazon Alexa Development
Amazon Alexa Development
 
Microsoft Professional Program - AI
Microsoft Professional Program - AIMicrosoft Professional Program - AI
Microsoft Professional Program - AI
 
AI Service Integration
AI Service IntegrationAI Service Integration
AI Service Integration
 
Intro to AI
Intro to AIIntro to AI
Intro to AI
 
Hour of Code - Amazon Alexa
Hour of Code - Amazon AlexaHour of Code - Amazon Alexa
Hour of Code - Amazon Alexa
 

Programming in Objective-C