發表文章

目前顯示的是 2018的文章

HTTP 協定

HTTP是網際網路上應用最廣泛的一種網路協定。 設計HTTP最初幕的士為了提供一種發布和接收HTML頁面的方法。 HTTP定義了八種方法: app 開發程用的是,GET 和 POST ,少部分用  PUT DELETE。 GET :向特定資源發出請求。           跟伺服器 要求資料回來 ,只適合傳少量資料。因為資料傳遞在網址上 POST:向指定資源送出資料 進行處理請求。            例如送出表單或者上傳檔案。資料被含在請求中。            POST 請求可能會導致新的資源的建立和既有資源的修改。          ( 通常用這個上傳檔案,比較適合傳完大量資料 ) 資料在傳輸過程中,資訊安全就顯得更加重要。 HTTPS 就是可以提供 HTTP 協定 SSL/TSL的加密保護。    註:TCP/UDP 網際網路基礎

[ iOS _ 筆記 ] GCD 多執行緒

GCD (Grand Central Dispatch)多執行緒     一種平行處理的機制,可以充分有效運用多核心的優勢,並減少記憶體使用。 執行效能也會比 NSThread 更好。     主要觀念是,Apple 把工作分成好幾個 queue,然後放進去裡面執行,因此也不用管有幾核心,系統會自動分配要如何執行,讓系統執行效率更好。(不用管有幾核心,讓系統自己處理)。     若自己寫的 dispatch queue 同等於背景的 Thread ,這時候不能碰 UI ,否則最造成問題。 因此要碰 UI 時要切回 main_queue 執行 。 同步執行: dispatch_sync() 使用同步執行時,Block 中的程式碼執行完畢後,原有的程式碼才會接下去繼續執行。 非同步執行: dispatch_async() 是異步執行 註記:影音串流,影音會解碼封包的順序性 因此會用到這種方式處理。

Swift - Category Extension

圖片
    在用 OC 寫App的時候,想要在現有的類別裡添加新的方法,又不想要用繼承的方式,那麼可以透過 Category 的方式來解決。     而在 Swift 中做到一樣的效果的時候,可以透過 Extension 的方式來達成。 例如:我要新增一個屬於我的顏色在 UIColor 裡面。 就可以透過 extension 一個屬於我的自訂顏色。 因此在 UIColor 中 就可以新增一個我們自訂的顏色。

iOS class 和 struct 的差異

這篇是整理一些 class 與  struck 差異文章,而且這個觀念在於面試時候也是一個特別喜歡問的問題。 而  class  與 struct 差異在哪裡,而我們會常看到所提出的點,大致是以下這三點:  struct 不能被繼承  struct 是 value type , class 是 reference type  struct 有 memberwise initializer   從下面一個例子來看 class A {     var number = 1 } var a = A () var b = a b . number = 2 這時候  a.number 和 b.number  都會是 2 當 var b = a 的這個時候是也將 a.number  也改變了 struct AA{     var number = 1 } var aa = AA () var bb = aa bb . number = 2 這個時候 aa.number 和 bb.number 個會是 1 和 2 而會有這個差異原因是, struct 是 value type 它不會去改變到其他值

[ iOS _ Swift 學習筆記 ] Dictionary 取值排序 (use Dictionary key value)

圖片
Swift DictionAry 取值排序 近期在開發專案的時候,遇到一個問題... 就是在取出 JSON 格式的物件時候,每一次取出來的時候是不會按照順序的, 因此在於資料的處理上就會變成,每次放的位置順序不一至。 所以在把拿到的 JSON 資料轉成物件存放記憶體後,再處理排序的問題。 解決方式是透過幫 Dictionary 排序來完成。 因此在快速 google 後參考了別人的文章後解決這個, Dictionary key 值排序的問題。 主要是透過以下這個方法  public func sorted(by areInIncreasingOrder: ((key: Key, value: value), (key: key, value: Value)) -> Bool ->[(key: Key, value: Value)] 這樣就能順利拿到排序好的  Dictionary 值了。 然後 Swift 3 和 Swift 4 的語法有變動。 因此在 firstKeyRealValue 和 second KeyRealValue   會和參考的文章有所不同。 參考資料來源 Developmnt of the app have a question. When i use JSON get objuct; Every time can't get same  order. So dispose data  first need get JSON data change objuct put in memory and  second solve order. But i get solve question means is use Dictionary. so i goole other people solve. Use Dictionary key value solve.  public func sorted(by areInIncreasingOrder: ((key: Key, value: value), (key: key, value: Value)) -> Bool ->[(key: Key, value: Value)]

iOS_開發 拿到 Tableview Cell 上的按鈕是哪一個 (Tableview Cell Button)

圖片
近期在開發 iOS App 時候使用到, tableview 而且在我的 tableview 上面會有 一個 Button 和一個 ImageView, 當我點選到圖案時會外跳出一個新的 ViewController 按下 Button 可以類似 加到我的最愛的功能。 這時候就是需要,去知道現在點到的是哪一個 tableview Cell,  一開始的想法是 透過 didSelectRowAt 來看到點選是哪一個 cell   (但這個是無法成功的) 因此在網路上查了資料。 學習到 可以透過 寫自己的 Protocol 來用自己的 delegate 來完成 首先開啟專案與一般的 tableview 一樣, 然後在 cellForRowAt 這個一個方法 要多添加一個 cell.delegate = self 然後再寫一個自己的  Protocol 這裡我們取名,SwiftTableViewDelegate, 這裡面有一個 func 來告訴我們按到哪一個 cell上的按鈕。 接下來在cell的那個 Class 裡面, 把 cell 按下去的按鈕 Action  添加我們剛才的 delegate 最後我們在這個 TableViewController 裡面添加這個自己的delegate 就可以透過這個自定義的方法拿到 目前點選到哪個cell 的 button  參考網頁: Swift: Using Protocols to Add Custom Behavior to a UITableViewCell

iOS _ 閉包 ( Closures )

圖片
Closures 的學習筆記 Closures 和 Function 的功能很相似,而從 Closures 就像似一個沒有名稱的 Function, 所以 Closures 可以定義一段程式碼,也可以接受參數和回傳資料。 然而以下是兩者之間的差異! 首先在 Apple Closures的語法是 { ( parameters ) -> ( return type)  in   ( statements ) } 從兩者的格式來看就能更清楚, Function func 方法名 (參數一,餐數二) -> 回傳值 {    程式碼區域  } Closures { (參數一, 參數二) -> 回傳值 in  程式碼區域 } 從這兩個格式來看, Function 把前面的方法名稱拿掉, 然後把參數和回傳型別拿到大括弧內 但 Closures 沒辦法像 Function 可以單獨定義, 因此必須指派為 變數 或是 常數 或 當作參數傳入 Function ( 將 Closures 指派為常數 ) ( 將 Closures 指派當做參數傳入 Function ,而這個也是最常看到的用法) 通常如果沒有重覆需要呼叫需求時 就 closures 來處理, 在執行方法後要立即執行其他事情時使用, ( 例如 網路下載資料後,去更新呈現的畫面內容 ) 以上是基本的 Closures 的 基本寫法。 接下來是 Closures 的簡寫,這個也是常常每個不同專案較長看到的。 當 Closures 是 Function 的最後一個參數的時候, 可以 移除 Function 中 Closures 的『 參數 』和『 冒號 』, 然後最後的『 小括號 』 移到前面 。 如同上面的是 簡寫 過的方式 birthday(month: 3, day: 1 ) { ( ) -> String in    return " Happy Birthday " } 原版本是 birthday(month:

iOS 生命週期 ( iOS ViewController Life )

生命週期主要是以下幾個: viewDidLoad :  view被載入記憶體時候,但畫面未被顯示之前,就會呼叫viewDidLoad 這時候我們會在這個時候 override 方法來增加對 view 的初始化。 viewWillAppear: 這個方法是當在 view 將呈現在畫面,且還沒有任何動畫呈現在畫面上的時候被呼叫。 可透過 overriding 這個方法來執行與 view 關聯的自定義任務。 ( 例如: 透過這個 viewWillAppear 把 status bar 樣式方向或樣式改變,改變 status bar 將在 view 呈現的樣式) viewDidAppear: 這個是在viewWillAppear 後,即 view  載入 view controller 後,就會載入這個方法。 可以透過 overriding 這個方法來增加任務到已呈現的 view   viewWillDisappear: 當 view 被移除前,且動畫開始執行前所呼叫的。 這時候可以透過 overriding 這個方法來改變 view 的各種狀態。 (例如: 可以把改變的 status  bar 改回原來) viewDidDisappear: 當 view 被移除後。

iOS - UIView的 clipsToBounds 筆記

UIView 的  clipsToBounds 屬性 今天在專案看到 cliosToBounds 的這個屬性  self.taBar.clipsToBounds = true 這個 cliosToBounds 屬性是決定子視圖的範圍,而這個預設值是 true 假設: 有個圖是A為父類別 和 B是子類別,而子類別父類別圖還要大。 因此,也就是說當值為 true 的時候 子類別的視圖如果超過父類別的視圖的時候,會被裁切到和父類別一樣。 而如果設定是 false  時候,那麼子類別的視圖會不被父類別圖的影響呈現出來。