Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Swift 構造体の時代 #yidev

3,357 views

Published on

#yidev 横浜 iPhone 開発者勉強会の第18回で話す予定だったスライドをアップしました。構造体に主眼をおいてみてみよう、そんなお話です。

内容的には、以前の第60回 Cocoa 勉強会関西で話したスライドを端的にまとめたスライドです。少し前のスライドになりますけど、ざっと見た感じ、今の Swift 2 でも参考できそうな様子でした。

  • (Unlimited)....ACCESS WEBSITE Over for All Ebooks ................ accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full EPUB Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full PDF EBOOK here { https://urlzs.com/UABbn }
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... Download doc Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Swift 構造体の時代 #yidev

  1. 1. EZ-‐‑‒NET  熊⾕谷友宏     http://ez-‐‑‒net.jp/ 2015.03.07   @  yidev  第18回勉強会 Swift  カジュアルプログラミング 《余談》構造体の時代
  2. 2. 熊谷友宏 http://ez-net.jp/ @es_kumagai Xcode 5 徹底解説 IP Phone 音でダイヤル 音で再配達ゴッド いつもの電卓 for iPhone いつもの電卓 for iPad 音で再配達
  3. 3. 構造体元年 2014 Swift
  4. 4. これまで & これから
  5. 5. これまで Primitive クラス 構造体 Objective-C
  6. 6. これから 型 クラス 構造体 Swift
  7. 7. これまでの定義 Objective-C // 構造体の定義 typedef struct { int v; } MyStruct; // クラスの定義 @interface MyClass : NSObject @property (readwrite) int v; @end
  8. 8. これからの定義 Swift // 構造体の定義 struct MyStruct { var v:Int32 } // クラスの定義 class MyClass { var v:Int32 }
  9. 9. これまで&これから MyStruct s = { 0 }; MyClass* c = [[MyClass alloc] init]; let s = MyStruct() let c = MyClass() これまでの使い方 これからの使い方 Swift Objective-C
  10. 10. これまで&これから SwiftObjective-C ▶ 構造体は脇役 ▶ 構造体が主役
  11. 11. 原則的な話
  12. 12. 構造体 これまで ▶ 複合データ型 これから ▶ 値や状態を表現する型
  13. 13. 値とは、定まるもの ▶ 評価したい式で使うもの ▶ 何かの式を評価したもの たとえば a = f(x,y,z)
  14. 14. ▶ 時間軸で変化する値 ▶ 今の 有り様 を表現するもの 状態とは、変化するもの たとえば location: (x,y) capacity: ㎖
  15. 15. それぞれ別の変数で表現 ▶ 不変値変数 let 値 ▶ 可変値変数 var 状態 値と状態
  16. 16. これから // 平面を動く物体の座標 var location:(x,y) // 平面座標の値 let location:(x,y) 変数自体が意味を持つ時代
  17. 17. 構造体の性質が格納先で変化 ▶ Immutable 扱い 可変値変数 var ▶ Mutable 扱い 不変値変数 let これから let s = MyStruct() s.value = 10 var s = MyStruct() s.value = 10
  18. 18. 値や状態で使う型は これから 原則、構造体で定義 ▶ String ▶ Array ▶ Int
  19. 19. クラスは?
  20. 20. クラス これまで ▶ オブジェクト型 これから ▶ 状態を制御する型
  21. 21. ▶ 制御対象の状態を持つ ▶ 状態を制御する機能の集合体 状態を制御 クラス var s = MyClass() s.value = 10 let s = MyClass() s.value = 10 状態は更新可能
  22. 22. コンセプトの違い 構造体 ▶ 値や状態を表現する型 クラス ▶ 状態を制御する型
  23. 23. コンセプトによる違い 構造体 let s = MyStruct() クラス let c = MyClass() 値 状態 実体 制御 同じ書き方で違う仕上がり (var なら状態)
  24. 24. コンセプトによる違い 構造体 let s = MyStruct() クラス let c = MyClass() 値 状態 実体 制御 let で保護されるところ 値の全体 実体のみ
  25. 25. 運用
  26. 26. おさらい ▶ 不変値変数 let 値 ▶ 可変値変数 var 状態 値と状態
  27. 27. 相互に乗り入れ可能 値と状態は
  28. 28. 変数のコピー カギは
  29. 29. 値 状態 変化するもの固定のもの コピー 連動を断ち切る let value = 0 var state = value 状態 変化するもの 連動を断ち切る ここで断ち切る コピー
  30. 30. コピーが原則 構造体は
  31. 31. ちなみに
  32. 32. クラスのコピーは実体だけ 実体 実体 制御する状態は共有 let instance1 = 0 let instance2 = instance1 状態 実体を複製、状態は共有
  33. 33. 最適化
  34. 34. コピーの指示 これまで これから // 明示コピー NSString* str2 = [str1 copy]; // 原則コピー let str2 = str1 Swift Objective-C
  35. 35. コピーの指示 これまで これから // 明示コピー NSString* str2 = [str1 copy]; // 原則コピー let str2 = str1 Swift Objective-C ここでコピー!と言っている ここでコピー!とは言ってない
  36. 36. タイミングを言語に委ねられる 原則コピーで
  37. 37. 最適化がしやすい 原則コピーは
  38. 38. もうひとつの最適化
  39. 39. 構造体の基本原則 ▶ 内容はコピー
 別の変数へ代入時は内容をコピー ▶ 原則コピー
 原則に従えばタイミングは問わない
  40. 40. Array の最適化 ▶ 内容はコピー
 別の変数へ代入時は内容をコピー ▶ 原則コピー
 ただし必要な時までコピーされない
  41. 41. 配列コピーのタイミング 配列 Buffer コピー 配列 バッファーは共有
  42. 42. 配列 Buffer 配列 配列コピーのタイミング 配列 Buffer Buffer × 遅延コピー 書き込み!
  43. 43. 原則に沿って遅延コピー Array は最適化設計
  44. 44. 疑問 ところで
  45. 45. マルチスレッドでの挙動は…? Thread 1 Thread 2 Buffer 配列 配列 コピーして渡したつもり 書き込み! Buffer 遅延コピー ×
  46. 46. なんとなく危なそう 未確認
  47. 47. 明示コピーの方法は? ▶ unshare()
 今は使えない Swift Beta 2 時代 ▶ map { $0 }
 スマートではない Swift 1.2 で実現するとしたら…?
  48. 48. おしまい これまでとこれから ▶ これからは構造体が主役 ▶ 値と状態を扱うオブジェクト 原則 ▶ 内容は原則コピー ▶ 原則コピーで最適化を図る マルチスレッド周りは? ▶ 未確認 !

×