發表文章

目前顯示的是 1月, 2016的文章

[iOS] 使用Swift 開發科學計算機App (1)

圖片
使用工具版本 Xcode7  程式語言 Swift 一般的計算機需要利用括號才能正確的做到先乘除後加減 這次練習開發的是可以直接支援先乘除後加減的計算機 APP Main.storyboard :主要的介面 Story board LaunchScreen.storyboard 用來呈現 launch screen 時短暫跳出來的畫面 將上方的畫面工具列如上圖這樣設定 然後可以看到Code 我們點選storyboard 上面的 label 按住 control 往 Code 區拉   出現這個對話框,採用這些設定值 上方這些系統自動產生的Code目前不需要,先刪掉 現在我們可以很乾淨的看到,計算機顯示區域以及他的 Code 按住 option 點擊 code 可出現 Document 接著我們要開始拉計算機上面的數字按鈕 按鈕的Connection 屬性就不是純粹顯示的 Outlet,而是要選 Action  Type 選 UIButton 名字的部分是取這個按鈕按下去會執行的 Method  所以我們命名為 appedDigit 也就是這個按鈕一按下去後,會把這個按鈕上面的文字 Append 到顯示區域目前字串的後面 接著我們實作 AppendDigit 方法的內容 由於負責顯示區域的字串 display 是 optional 類型 也就是他如果沒有值的話,就會 nil 我們要使用 ! 來拆開包裝 將其從optional的字串變成普通的字串才能使用 以上是目前 appendDigit  function 的內容 可以看到,我們如果只是單純地按下按鈕,把它的文字加到目前字串的後面 那按下7兩次後,原本的 0 還在的情況下,7會直接 append 在後面,出現 077 這與我們預期只要出現的 77 不一樣!  必須做個機制來處理掉這個情況 於是乎~ 我們宣告一了一個變數 叫做 inTyping ,負責來記錄目前的狀態是否是使用者正在輸入的狀態,如果是的話,就直接將字串 append 在目前要顯示的字串後面 如果不是正在輸入的狀態,就直

[Note] Swift 練習記錄

圖片
Swift 的 Bundle Identifier: 由 Product Name + Organization Name 所組成 基本資料結構:變數,常數,print 用法 以下列出常用的變數型態 Structure Int Double String Array Dictionary 可以看出  print 裡面要印出變數的方法 一種是使用 \() 另一種是使用強制轉型 String 來印 下圖DEMO了Dictionary 資料結構的用法 在此我們發現了 Optional 關鍵字出現在Console 當中 在 上一篇 網誌中有提及Swift 程式語言當中 Optional 的新觀念 這此處的情形解釋: 因為Dictionary 的 Key 不一定會有值,所以會出現 Optional 如果我不想看到Optional 的字樣的話,可以使用 ! 來強迫取值,將Optional String 轉型回一般的 String 關於 Loop: 上:傳統寫法 下:新的寫法 兩種寫法都可以用 使用 for loop 走訪 Dictionary 將 value = 99 的 Key 抓出來 這裏也DEMO了如何取出在Dictionary當中的 Key 與 Value 的用法

[筆記] Swift 程式語言

圖片
Swift Note ARC: Auto Reference Counter 如果忘了 ++ 的話 可能會有 run time error 因為當 reference 是 0  的時候,系統可能會自動回收,但是你還在用用到一半時,就會 ERROR 如果忘了 -- 的話,就容易造成 Heap 滿 memory leak ARC 會 maintain 一個 String reference to class instance property, constants, and variables to restrict de-allocation when class instance is currently in use. Types: 如果變數是 reference type 時, 才會 pass by reference 如果變數是 value type時,他pass是 copy 只有class的時候才是 reference type 其他的 dictionary, array, double, string 等等都是value type swift 的 array 的 implement 是用 struct  以下使用 Swift Class 來解釋 Reference Type  Reference 的 type: strong reference: 會 increase retain count  weak reference: 不會 increase retain count 允許 nil,只能宣告給 variable,不可以給 constant !!! (寄生蟲的觀念,為了避免 memory leak) 用寄生蟲解釋,在weak reference機制下,要看寄生的母體Object 存在才能存在,一旦母體Object死掉了(free掉了),用weak reference來寄生的變數就會一起死掉,假設這裡我們採用的是 Strong reference 的話,母體死掉後,寄生蟲還存在,參照還在的情況下,Free不掉,就容易造成Memory leak! Un-owned reference: 用在 recursive relationship