Make swift great again

Làm swift toẹt vời trở lại Dạo này thời tiết Hà Nội trở lạnh, post một bài cho nóng người :D. Lần này mình sẽ trình bày về một số tip để làm code trông swifty hơn. defer Sử dụng defer nếu như bạn là người hay quên :D. Tác dụng của defer là nó sẽ chạy sau khi hàm return. 1 2 3 4 5 6 7 8 9 10 11 12 13 var x = 1 func doDefer(_ value: inout Int) -> Int { // effect after return defer { value += 1 } value += 1 return value } print(doDefer(&x)) // 2 print(x) // 3 Với tác dụng của hàm defer ta có thể tận dụng để giải phóng bộ nhớ, close file hay bất cứ tác vụ nào đòi hỏi 2 bước ràng buộc lúc bắt đầu và kết thúc.

Config Project

Hồi mới tiếp xúc với lập trình IOS, mỗi khi build sản phẩm để công ty test, mình lại phải điều chỉnh một số configuration ngay chính trong code. Lúc config thế này, lúc config thế kia, tùy chỉnh cho nó hợp với môi trường theo cách #define như này 1 2 3 4 5 #ifdef DEBUG #define BASE_URL ... #else #define BASE_URL ... #endif hoặc kiểu comment như này

Tạo view từ xib

1. Tạo uiview từ xib Khi tạo giao diện cho 1 app, chắc hẳn ai cũng gặp trường hợp có các view con xuất hiện đi, xuất hiện lại giữa các màn hình khác nhau. Để tránh việc copy qua lại nhàm chán, ta nên tách view con đó ra thành 1 xib duy nhất và tái sử dụng khi cần thiết. Đầu tiên ta tạo class kế thừa từ UIView và Xib đi kèm như hình sau.

Clickable label

Để tạo clickable cho text, ta có thể sử dụng UITextView, đó là cách đơn giản nhất. Ngoài ra ta cũng có thể tận dụng sức mạnh của Textkit :D để áp dụng trực tiếp lên UILabel mặc dù chỉ sử dụng một phần rất nhỏ của nó thôi. Hôm nay lười nên mình show code luôn :), extension của UILabel nhé :). Cách sử dụng đơn giản như sau

Toán tử 3 ngôi hay sugar syntax

Tình huống Hôm nay có chút buồn ngủ nên mình tạo động lực cho bản thân bằng cách tự làm thử toán tử ba ngôi trong swift. Đôi khi chơi theo kiểu hardcore cũng mang lại liều doping khá mạnh, giống như phê thuốc vầy :D. Bình thường mình không dùng autoclosure vì thấy nó cũng không có gì đặc sắc, chỉ là syntax sugar. Áp dụng đúng chỗ thì ngon, áp dụng không đúng chỗ thì càng làm code khó hiểu.