8 điểm mà bạn cần phải nhất định cần lưu ý khi lập trình iOS
Cần lưu ý thiết kế tránh việc xuất hiện bug khi gửi nhận dữ liệu. Do đó cần tránh sử dụng sharedInstance
để gửi nhận dữ liệu. Tuyệt đối cũng không sử dụng notification.
- Cho dù sử dụng
NSURLConnection
hayAFNetworking
thì response đều được cache dựa vào setting. - Phải trả về đúng response code của http.
- Phải xem xét cẩn thận setting cache của image hay json được response từ server.
- Đặc biệt phải kiểm tra kỹ setting liên quan đến error page & maintenance page không thường xuyên được trả về.
- Sử dụng các version thấp không được support thì khi cài đặt sẽ thất bại.
- Thay vì setting từ 7.0 trở lên, lại setting từ 7.1 trở lên thì nếu install ở 7.1 sẽ thất bại đến 30%.
- Trong trường hợp đang sử dụng
cocoapod
, cần kiểm tra xem có sự khác nhau giữa project version và version đang ghi trong Podfile không. - Lưu ý với 7.0.2 thì có 1 số vấn đề như vỡ view chả hạn.
Setting calendar sai
- Bên cạnh Gregorian Calendar còn có Japanese Calendar và Buddhist Calendar.
- Nếu lưu ngày tháng dưới dạng
NSDate
thì sẽ không gặp vấn đề, tuy nhiên khi format sang dạng string để hiển thị hay khi làm việc với web server chả hạn thì sẽ phát sinh vấn đề.- Japanese Calendar output ra Bình Thành năm 26 thay cho năm 2014.
- Buddhist Calendar output ra Phật Lịch năm 2557 thay cho năm 2014.
Xử lý split keyboard
- iPad hỗ trợ chức năng split keyboard.
- Cần lưu ý các vấn đề khác biệt so với các keyboard khác (ví dụ như notification timing).
Các view
được set bằng sharedInstance
và viewDidLoad
sẽ gặp vấn đề
- Trong trường hợp sử dụng
sharedInstance
để gửi nhận dữ liệu thì có thể phát sinh vấn đề sử dụng data cũ để xử lý. - Ví dụ như gởi message đến A thì lại bị gửi đến B.
- Cần lưu ý thiết kế tránh việc xuất hiện bug khi gửi nhận dữ liệu. Do đó cần tránh sử dụng
sharedInstance
để gửi nhận dữ liệu. Tuyệt đối cũng không sử dụng notification. - Hãy tham khảo Communication Pattern ở link sau: http://www.objc.io/issue-7/communication-patterns.html
5. Những abnormal cases dễ gây crash
Có nil
trong NSDictonary
và NSNumber
.
- Thỉnh thoảng có case xuất hiện nil khi giải phóng biến số trong block.
- Cần chú ý property của view.
- Cần xác định và viết test sẵn liên quan đến việc dữ liệu từ server có bắt buộc phải có không, nếu không có thì có hoạt động được không.
Thỉnh thoảng KVO bị lỗi
- Nếu không chú ý sẽ rất dễ bị crash.
- Khuyến khích sử dụng KVOController của Facebook: https://github.com/facebook/KVOController
Thao tác khi đang kết nối network
- Chuyển sang view khác.
- Chú ý nếu việc run một action khác.
Test cho new user
- Những vấn đề phụ thuộc vào dữ liệu là khó nhận thấy nhất.
- Nên test tất cả các cases có thể thì tốt (ví dụ như tất cả các lựa chọn của user).
Nên sử dụng Crashlytics6. Những điểm khiến việc hiển thị trở nên kỳ cục
Vị trí phía trên ScrollView
- Dễ phát sinh vấn đề do version.
- Dễ phát sinh vấn đề khi sắp xếp nhiều items ở đó.
Test khi data là 0 record
- Phát sinh vấn đề không hiển thị bất cứ gì cả.
- Trong quá trình phát triển thì khó để ý đến lỗi này.
Tái sử dụng cell
- Tái sử dụng cell trong
tableView
&collectionView
. - Ngay cả khi không có data thì cũng gán lại là không có data.
- Rất hay gặp trường hợp tái sử dụng cell đang thực hiện load ảnh.
Mở từ notification
- Khi mở từ notification thì có 2 trường hợp: chưa chạy app và đang chạy app.
- Rất dễ quên các case như đang chạy app và đang mở modal view thì mở notification.
- Cần chú ý việc user chưa login mà access từ notification.
- Có cả trường hợp notification khi đang khởi động app.
Mở từ url schema
- Liệu có xuất hiện bug về mặt security không ?
- Thiết kế sao cho đối với API thì bất cứ dữ liệu bình thường nào đến cũng ko gặp vấn đề gì.
Mở từ background fetch
- Khác life cycle
8. iPhone device
- Có cả những vấn đề phụ thuộc vào device nên tốt nhất hãy test trên từng device một.
Cùng Danh Mục:
Sự cần thiết từ lập trình IOS vào ứng dụng là gì?
Tôi nên bắt đầu từ đâu khi muốn bắt đầu học lập trình IOS?
5 Bước để trở thành một lập trình viên iOS giỏi
So sánh những điều về lập trình iOS và Android
Làm sao để trở thành một lập trình viên giỏi trên nền tảng iOS?
Lập trình iOS sẽ nên sử dụng ngôn ngữ gì?
Leave a Reply