LikeABossApp

我養罷個,罷個養我

在 Storyboard / XIB 中設定 view 的圓角 (corner radius)

若是使用code來設定圓角大概會長這樣子:

若是使用Storyboard或是XIB等等的IB(Interface Builder),在介面上預設是沒辦法設定圓角數值的(雖然可以自己客製你的IB,不過這篇先不提),

所以我們通常需要手動加上以上的code來達成圓角的目的,而我相信大部分的新手開發者都會遇到一個坑,

就是設定了圓角但是UI畫面沒有改變,會造成這個原因通常有兩種情況: (繼續閱讀…)

用 GCD dispatch_group 來處理多個任務

最近接到一個需求,在載入一個畫面時要同時呼叫兩支API,分別得到result之後再將兩組資料二合為一。

這邊先不討論為什麼backend不能乾淨俐落的用一支API回傳就好,正所謂無風不起浪,事出必有因,總之要怎麼在確認兩支API都得到result之後再做後續的處理呢?

你可以先call一支API然後把另外一支包在裡面,如果有三支,就再包一支,最後程式碼看起來會長這樣:

{{{{{}}}}}

不知不覺寫了一段俄羅斯娃娃呢 (繼續閱讀…)

Firebase + GTM for iOS 實做加強型電商追蹤

關於GTM的那些坑與逝去的青春

前言

原本專案一直都是以 GA 來追蹤使用者行為,但最近 GA 發出警告訊息提示追蹤數超過一個月一千萬次的額度(註1),因此決定改用 Google 力推的 Firebase Analytics 取代 GA(註2),但因為我們有額外追蹤加強型電商 (Enhanced e-commerce),這一段的報表在 Firebase console 上是沒有的,所以必須搭配 GTM(Google Tag Manager) 來做為 Firebase 與 GA 之間的橋樑,傳遞資料給 GA。

註1:追蹤額度說明文件:Google Analytics Collection Limits and Quotas

註2:Firebase Analytics 在基本追蹤上是無限制的,但是加強型電商的部分是屬於 Universal Google Analytics,就會有每個用戶一天20萬次的限制。

 

GTM是用來做什麼的?

首先來看官方的解釋: (繼續閱讀…)

[Swift小教室] guard 錯誤守衛

舊有的撰寫風格

在寫objc時我們時常看到這樣的寫法:

這邊很自然的使用if-else來區分成功與失敗兩塊block並各自做處理,不過在使用OClint等程式風格分析工具後,它會建議我們改寫成:

第二種寫法早一步偵測出錯誤,並且在第一時間處理error後,return掉該function不再繼續往下執行,看到這樣的建議撰寫風格讓我不經好奇它有什麼特別之處呢? (繼續閱讀…)

[Swift小教室] 關於 inout(copy-in copy-out)

在Swift中,一個function傳入的參數無法直接改變它的值,先看一個例子:

這段程式碼試圖增加1點參數值"value",而complier此時會產生以下error:

會產生這個error是因為,Swift的function中的參數都是以pass-by-value的方式傳遞,也就是在function外部先copy一份再帶進function中,而function中的參數預設都是以常數為型態,所以無法修改。 (繼續閱讀…)

刪除 git 中 features 所有的 branches

開發時常常 branch 越開越多,但其實很多 branch 在 merge 回 develop 裡之後就可以刪掉了,於是查到了這麼一段指令,用來刪除所有 local 與 remote 中 feature 底下所有的 branch,使用前一定要確保還需要用到的 branch 有做備份。