swift q )b )hscc.cs.nctu.edu.tw/~lincyu/swift/swift02.pdfÜ ) uÀ Ôrg \ êmñxêbÿ ¢rpgÖ ³...

45
Swift 蝱褩承ဩ 膌ਜ玡ॊ

Upload: others

Post on 09-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

Swift

Page 2: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

Outline• (inheritance) (extension)

• (protocol)

• (generic)

• (automatic reference counting)

• (error handling)

Page 3: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

Outline• (inheritance) (extension)

• (protocol)

• (generic)

• (automatic reference counting)

• (error handling)

Page 4: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

(1)

Page 5: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

(2)

Page 6: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

(Override)

Page 7: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)
Page 8: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)
Page 9: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

• final

Page 10: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

is

Page 11: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

as as

Page 12: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

as? / as! (1)

Page 13: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

as? / as! (2)

Page 14: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

AnyObject

Page 15: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

Any

Page 16: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

(Extension)

Page 17: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)
Page 18: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

subscript

Page 19: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

Outline• (inheritance) (extension)

• (protocol)

• (generic)

• (automatic reference counting)

• (error handling)

Page 20: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

• (adopt)

(conform)

• Java (interface) (implement)

Page 21: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)
Page 22: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)
Page 23: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)
Page 24: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

(extension)

Page 25: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)
Page 26: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)
Page 27: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

Outline• (inheritance) (extension)

• (protocol)

• (generic)

• (automatic reference counting)

• (error handling)

Page 28: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

(generic)

• (reuse) (stack)

Page 29: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

(generic)

Page 30: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

(1)

Page 31: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

(2)

Page 32: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

(3)

Page 33: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

typealias

Page 34: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

Outline• (inheritance) (extension)

• (protocol)

• (generic)

• (automatic reference counting)

• (error handling)

Page 35: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

• (Automatic Reference Counting, ARC)

Page 36: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)
Page 37: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

Strong Reference Cycle

Page 38: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

Weak Reference

Page 39: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

Unowned Reference

Page 40: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

Outline• (inheritance) (extension)

• (protocol)

• (generic)

• (automatic reference counting)

• (error handling)

Page 41: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)
Page 42: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)
Page 43: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

do-catch / try / throws / throw (1)

Page 44: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

do-catch / try / throws / throw (2)

Page 45: Swift q )b )hscc.cs.nctu.edu.tw/~lincyu/Swift/Swift02.pdfÜ ) uÀ Ôrg \ êMñxêBÿ ¢rPGÖ ³ (adopt) =§ ' 1 ÊshrOY~Kä r Q ] I ÀBÿ ¢rPr¨ ów2{ =§ ' 1 QziW8 P¶ ! (conform)

as?