Bài đăng

Đang hiển thị bài đăng từ Tháng 10, 2017

[iOS] Generic type trong Swift

Hình ảnh
Chào mọi người, hôm nay mình sẽ nói về Generic type trong Swift. Nếu bạn nào đã học các ngôn ngữ khác như Java, C#, .. và đã biết về Generic type thì Generic type trong Swift cũng tương tự như vậy. Vậy Generic type là gì? Generic type thực chất là một kiểu dữ liệu bất kỳ mà lập trình viên chưa muốn khai báo. Nó mang tính chất tổng quát, đại diện cho từng kiểu dữ liệu cụ thể trong hoàn cảnh cụ thể. Nghe có vẻ hơi mơ hồ, mình sẽ lấy 1 ví dụ để mọi người hiểu hơn. Mình sẽ tạo một ngăn xếp(stack). Ngăn xếp là gì chắc các bạn cũng biết. Nó là một cấu trúc dữ liệu căn bản trong lập trình theo nguyên tắc FILO(First In Last Out), tức là vào trước ra sau. Bạn cứ tưởng tưởng bạn có một cái ngăn xếp quần áo, bạn xếp đồ vào trong đó. Mỗi lần chèn thêm 1 vật mới, nó sẽ chèn lên đồ gần nhất được thêm vào. Ngược lại, khi lấy đồ ra khỏi ngăn xếp, bạn phải lấy vật bạn cho vào gần nhất. Có vẻ không đi đúng chủ đề lắm, nhưng ở đây mình muốn giải thích cho các bạn hiểu về Stack trước khi đi vào ví ...

[iOS] Truyền tham chiếu trong Swift

Hình ảnh
Chào mọi người, hôm nay mình muốn chia sẻ về cách truyền tham chiếu trong Swift. Đầu tiên, mọi người cần phải phân biệt được thế nào là truyền tham chiếu và truyền tham trị trong lập trình. Nếu bạn nào đã lập trình C, C++ thì chắc không lại lẵm gì với con trỏ, đó là một loại truyền tham chiếu. Do con trỏ vô cùng phức tạp nên ở các ngôn ngữ ra đời sau này như Java, C# đã loại bỏ con trỏ để lập trình viên đỡ gặp vấn đề trong khi lập trình. Với Swift là một ngôn ngữ bậc cao, hỗ trợ cực tốt cho lập trình viên thì việc sử dụng con trỏ là không cần thiết. Tuy nhiên nếu lập trình viên có nhu cầu hoặc với một công việc bất buộc thì Swift vẫn cho phép điều này. Để làm việc với con trỏ, Swift cung cấp từ khoá "inout". Để mọi người hiểu hơn, mình sẽ đưa ra một ví dụ kinh điển về truyền tham chiếu đó là tráo đổi giá trị 2 số. Như vậy cách truyền tham trị trong Swift cũng tương đối đơn giản, bạn chỉ cần thêm từ khoá inout trước kiểu dữ liệu trong khai báo hàm để trình biên dịch bi...

[iOS] Access control trong lập trình iOS

Hình ảnh
Hôm nay mình sẽ nói về các quyền truy cập trong lập trình iOS, cụ thể là ngôn ngữ Swift. Hiện tại phiên bản mình đang sử dụng là Swift 3.1 trên Xcode 8.3 Đầu tiên để hiểu về các quyền truy cập, mọi người cần phân biệt được các thành phần trong 1 project iOS, đó là module và file - Module là thành phần riêng biệt trong mỗi project iOS, để liên kết các module với nhau, chúng ta sử dụng từ khoá "import". Example: import UIKit. Để tạo một module mới, bạn chọn New -> Project -> Cocoa Touch Framework - File thì đơn giản rồi, chắc không cần phải giải thích nữa :)) Hiện tại, Swift cung cấp cho lập trình viên 5 quyền truy cập khác nhau theo thứ tự từ cao đến thấp về mức độ truy cập như sau: Open Public Internal Fileprivate Private * Với open và public thì đơn giản bạn có thể truy cập từ mọi nơi, kể cả khác module. Chỉ cần bạn khai báo module mình sử dụng là có thể gọi các class, các function tương ứng. Tuy nhiên để phân biệt được open và public, có...