1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu lập trình ứng dụng IOS và xây dựng ứng dụng lập danh sách những công việc cần làm cho sinh viên

66 510 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 66
Dung lượng 22,76 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Các thành phần của hệ điều hành IOS Các tiến trình Processes:Là những tuyến riêng lẻ kết hợp với dữ liệu để thựchiện các tác vụ như duy trì hệ thống, chuyển mạch gói dữ liệu, thực hiện g

Trang 1

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI

KHOA CÔNG NGHỆ THÔNG TIN

- -BÁO CÁO THỰC TẬP TỐT NGHIỆP

Đề Tài: Tìm hiểu lập trình ứng dụng IOS và xây dựng ứng dụng lập danh sách những công việc cần

làm cho sinh viên

Giảng viên hướng dẫn : Ths Nguyễn Lan Anh

Sinh viên thực hiện : Lê Văn Cảnh

Hà Nội, 3-2015

Trang 2

MỤC LỤC

Mục Lục 2

Lời mở đầu 4

CHƯƠNG 1: Cơ Sở lý thuyết 1

1.1 Giới thiệu hệ điều hành IOS 1

1.2 Tổng quan về kiến trúc IOS 2

1.3 Các thành phần của hệ điều hành IOS 2

1.4 Tổ chức bộ nhớ trong IOS: 3

1.5 Tiến trình iOS (Processes iOS) 5

1.6 Kernel IOS 7

1.7 Trình điều khiển thiết bị 10

1.8 Kiến trúc của hệ điều hành iPhone 12

Chương 2: Ngôn ngữ lập trình Swift 14

2.1 Giới thiệu ngôn ngữ Swift 14

2.1.1 Ngôn ngữ lập trình bậc thấp và bậc cao 14

2.1.2 Ngôn ngữ lập trình dạng script 15

2.1.3 Những lợi ích của Swift 17

2.1.4 Điểm yếu của Swift 18

2.2 Biến, hằng số trong ngôn ngữ lập trình Swift 19

2.2.1 Những quy ước cơ bản trong ngôn ngữ lập trình Swift 19

2.2.2 Biến (Variable) và Hằng số (Constant), cách khai báo biến và hằng số 19

2.3 Các kiểu dữ liệu trong ngôn ngữ lập trình Swift 19

2.3.1 Xử lý Chuỗi (String) 20

2.3.2 Ép kiểu dữ liệu 22

2.3.3 Mảng (Array) và Từ điển (Dictionary) 22

2.3.4 Mảng (Array) 22

2.3.5 Mảng 2 chiều (Array of Array): 23

2.3.6 Từ điển (Dictionary) 24

2.3.7 Từ điển 2 chiều 24

2.4 Table View và Navigation Controller 25

Trang 3

2.4.1 Table View 25

2.4.2 Navigation Controller 26

CHƯƠNG 3: TÌM HIỂU PHẦN MỀM XCODE VÀ IOS SIMULATOR 27

3.1 Phần mềm Xcode Thông Qua Bản Tải Về Từ Trang Dành Cho Developer 27

3.1.1 Cài Đặt 27

3.1.2 Thực Thi Và Kiểm Tra Lỗi Của Ứng Dụng 35

3.2 Tìm hiểu IOS Simulator 39

Chương 4: Xây dựng ứng dụng 48

4.1 Yêu cầu phần cứng và phần mềm 48

4.1.2 Yêu cầu tối thiểu để lập trình Swift 48

4.1.3 Yêu cầu tối thiểu của ứng dụng Checklists 48

4.2 Giới thiệu ứng dụng checklists 48

4.3 Giao diện chương trình 49

Kết Luận 59

Tài liệu tham khảo 60

Trang 4

LỜI MỞ ĐẦU

Dưới sự phát triển vượt bậc của Công nghệ thông tin, thời đại Internet bùng nổchiếc điện thoại di động không chỉ đơn giản là phương tiện liên lạc mà nó còn là công

cụ hữu ích cho con người

Ngoài các chức năng nghe, gọi, nhắn tin thông thường, ngày nay điện thoại diđộng còn có rất nhiều ứng dụng khác như: quay phim, chụp ảnh, nghe nhạc, chơigame, gửi mail, tìm kiếm thông tin …Do tính cơ động cao mà các thiết bị di động nàyngày càng tham gia mật thiết vào cuộc sống người dùng

Do nhu cầu thực tế của các bạn sinh viên trong quá trình học tập cần một công

cụ quản lí công việc, thời gian biểu hàng ngày vì vậy em đã chọn đề tài xây dựng ứngdụng lập danh sách những công việc cần làm cho sinh viên

Trong thời gian thực tập tại trường, em đã nhận được sự giúp đỡ, chỉ bảo tậntình của cô Lan Anh đã giúp em hiểu biết thêm phần nào về lập trình ứng dụng di độngIOS và xây dựng một ứng dụng cụ thể, hoàn chỉnh

Tuy nhiên do hạn chế về thời gian cũng như nhận thức còn non kém nên báocáo này không tránh khỏi những sai sót Em mong nhận được sự giúp đỡ và đóng góp

ý kiến của các thầy cô để báo cáo được hoàn chỉnh hơn

Em xin chân thành cảm ơn!

Trang 5

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT1.1 Giới thiệu hệ điều hành IOS

IOS là hệ điều hành trên các thiết bị di động của Apple Ban đầu hệ điều hànhnày chỉ được phát triển để chạy trên iPhone (gọi là iPhone OS), nhưng sau đó nó đãđược mở rộng để chạy trên các thiết bị của Apple như iPod touch, iPad và Apple TV

Giao diện người dùng của iOS dựa trên cơ sở thao tác bằng tay Người dùng cóthể tương tác với hệ điều hành này thông qua rất nhiều động tác bằng tay trên mànhình cảm ứng của các thiết bị của Apple

Hệ điều hành này được tiết lộ tại Hội nghị và Triển lãm Macworld diễn ra vàotháng 1 năm 2007 và được phát hành vào tháng 9 năm đó.Khi đó, hệ điều hành nàychưa có một cái tên riêng nên chỉ đơn giản là "iPhone chạy OS X".Ban đầu, ứng dụngbên thứ ba không được hỗ trợ Steve Jobs đã chỉ ra rằng những nhà phát triển có thểxây dựng các ứng dụng web mà "sẽ cư xử như những ứng dụng ban đầu trên iPhone"

Vào ngày 17 tháng 10 năm 2007, Apple thông báo một bộ phát triển phần mềmđang được xây dựng và họ dự định sẽ đưa nó đến "tay của các nhà phát triển vào tháng2" Ngày 6 tháng 3 năm 2008, Apple đã phát hành bản dùng thử đầu tiên, cùng với mộtcái tên mới cho hệ điều hành, đó là "iPhone OS"

Tháng 6 năm 2010, Apple đổi cái tên iPhone OS thành iOS Nhãn hiệu "IOS"

đã được Cisco dùng để đặt tên cho hệ điều hành của mình Để tránh các vụ kiện cáo,Apple đã xin giấy phép sử dụng nhãn hiệu iOS từ Cisco

Trang 6

1.2 Tổng quan về kiến trúc IOS

Khi mà lơi ích của việc định tuyến qua mạng trở nên phát triển, đòi hỏi routerphải hỗ trợ một số những giao thức và một số chức năng khác, như yêu cầu nối giữacác mạng

Cisco đã thêm những tính năng mới cho phần mềm của router Kết quả có nhiềuchức năng cầu nối và định tuyến như ngày nay Nhưng hầu như những kiến trức cơbản của hệ điều hành vẫn giống như ban đầu IOS là một cấu trúc đơn giản, nhỏ, đượcthiết kế ràng buộc về bộ nhớ, về tốc độ, về phần cứng của router

Hình 1.2.1: Kiến trúc hệ điều hành IOS

1.3 Các thành phần của hệ điều hành IOS

Các tiến trình (Processes):Là những tuyến riêng lẻ kết hợp với dữ liệu để thựchiện các tác vụ như duy trì hệ thống, chuyển mạch gói dữ liệu, thực hiện giao thứcđịnh tuyến…

Nhân (Kernel): Cung cấp những dịch vụ cơ bản của hệ thống tùy thuộc vào IOSnhư: quản lý bộ nhớ, lập lịch các tiến trình… nó cung cấp quản lý tài nguyên phầncứng( CPU, bộ nhớ) cho các tiến trình

Bộ đệm gói (Packet buffer): Cung cấp các bộ đệm toàn cục và kết hợp với chứcnăng quản lý bộ đệm để lưu trữ gói dữ liệu đang được chuyển mạch

Trình điều khiển thiết bị (Device driver): Làm chức năng điều khiển giao tiếpgiữa phần cứng và thiết bị ngoại vi, giao tiếp giữa các tiến trình IOS, kernel và phầncứng.Chúng cũng giao tiếp với phần mềm chuyển mạch nhanh (fast switchingsoftware)

Trang 7

Phần mềm chuyển mạch nhanh (Fast switching soft): Chức năng chuyển mạchgói dữ liệu cao

1.4 Tổ chức bộ nhớ trong IOS:

IOS ánh xạ toàn bộ bộ nhớ vật lý thành một không gian địa chỉ ảo rộng lớn.MMU (Memory Map Unit) của CPU có giá trị khi được sử dụng để tạo không gian địachỉ ảo thậm chí khi mà IOS không tận dụng một khối nhớ ảo trọn vẹn

Miền bộ nhớ (Memory region) : IOS chia không gian địa chỉ này thành nhữngmiền bộ nhớ gọi là region, mỗi region phù hợp với những loại bộ nhớ vật lý khácnhau Ví dụ : SRAM có thể lưu trữ gói dữ liệu và DRAM có thể lưu trữ phần mềmhoặc dữ liệu Phân lớp bộ nhớ thành các region cho phép IOS phân loại các bộ nhớkhác nhau vì vậy mà phần mềm không cần biết chi tiết về bộ nhớ trên mỗi platform

Các region được phân chia thành một trong tám mục như hình :

Local(cục bộ) Thông thường lưu trữ cấu trúc dữ liệu lúc chạy và

local heap, thường là DRAM

Lomem

Bộ nhớ chia sẻ CPU và bộ điều khiển môi trườngmạng sử dụng thông qua một bus dữ liệu, thường làSRAM

Fast

Bộ nhớ truy xuất nhanh, như SRAM, sử dụng chomục đích đặc biệt và những tác vụ xem yêu cầu về tốcđộ

PCI Bộ nhớ bus CPI, được sử dụng bởi tất cả thiết bị

trên các bus PCI

hoặc iOS chạy từ flash, nó cũng có thể lưu trữ mộtbảng file(tập tin) cấu hình dự phòng và những dữ liệu

Trang 8

khác.Thông thường thì file hệ thống được xây dựng ởmiền bộ nhớ flash này.

Hình 2: Các loại RegionVùng bộ nhớ (Memory pool): iOS quản lý bộ nhớ rỗi thông qua một chuỗi cácmemory pool.Mỗi pool là một tập hợp các khối nhớ mà có thể cấp phát và thu hồi khicần.Memory pool được xây dựng bên ngoài các region và được quản lý bởi kernel.Thường thì pool tương đương với một region đặc biệt

Hình 3 : Region và Subregions

Một memory pool có thể xây dựng từ một vài region mở rộng, cho phép bộ nhớđược cấp phát và thu hồi từ các miền bộ nhớ khác nhau để tối đa hiệu quả hoạt động,

có thể dùng lệnh show memory để hiển thị các pool này: router#show memory Head

Total(b) Used(b) Free(b) Lowest(b) Largest(b) Processor 61281540 7858880 3314128

4544752 4377808 4485428 I/O1A00000 6291456 1326936 4964520 4951276

4964476 PCI 4B000000 1048576 407320 641256 6412556 641212 … Mô tả như

sau(kích thước tính theo byte):

 Total: kích thước của pool

Trang 9

 Used: lượng bộ nhớ được cấp phát

 Free: lượng bộ nhớ sẵn sằng để sử dụng

 Lowest: lượng bộ nhớ thấp nhất sẵn sàng sử dụng từ khi mà pool được tạo

 Largest: kích thước khối nhớ liên tục lớn nhất sẵn sàng sử dụng hiện tại

1.5 Tiến trình iOS (Processes iOS)

Vòng đời của một tiến trình: Một tiến trình có thể được tạo ra hoặc kết thúc bất

cứ lúc nào trong khi iOS đang hoạt động ngoại trừ có ngắt xảy ra.Nó được tạo ra bởikernel hoặc bởi một tiến trình khác đang chạy khác Một thành phần có trách nhiệmtạo nhiều tiến trình trong iOS gọi là parser(bộ phân tách)

Parser này là một tập các chức năng làm phiên dịch cấu hình iOS và dòng lệnhEXEC.Parser được yêu cầu bởi kernel trong suốt quá trình khởi tạo iOS và các tiếntrình EXEC, để cung cấp một giao tiếp dòng lệnh CLI thông qua giao tiếp console(giao tiếp người và máy) và các phiên telnet.Tại bất cứ thời điểm nào, một lệnh đượcnhập bởi người dùng hoặc một cấu hình được đọc từ file,parser phiên dịch dòng lệnh

và đưa ra những hoạt động tức thời

Một vài lệnh cấu hình bởi việc gán trị, như địa chỉ IP, trong khi cấu hình khácnhư định tuyến hoặc giám sát Một vài lệnh làm cho parser khởi tạo một tiến trình mới

Ví dụ: khi mà lệnh cấu hình no router eigrp được nhập vào, parser khởi tạo một tiếntrình mới, gọi là ipigrp (nếu như tiến trình ipigrp đã được khởi tạo rồi), bắt đầu xử lýgói ip EIGRP.Nếu như lệnh cấu hình no router eigrp được nhập vào, parser kết thúctiến trình ipigrpvà không còn chức năng định tuyến EIGRP Tiến trình iOS trải qua cáctrạng thái như sau:

 Trạng thái khởi tạo (Create): Khi mà một tiến trình mới được tạo, nó nhận vùngstack riêng của mình và vào trạng thái mới (new).Tiến trình có thể di chuyểnđến trạng thái điều chỉnh (Modify).Nếu không có thay đổi cần thiết, thì tiếntrình chuyển sang trạng thái thực thi (Execute)

 Trạng thái điều chỉnh (Modify): Không giống như hầu hết các hệ điều hành,iOS không tự động truyền tải các tham số khởi tạo hoặc gán một giao tiếp đếnmột tiến trình mới khi nó được tạo, bởi vì nó cho rằng hầu hết các tiến trìnhkhông cần tài nguyên này.Nếu một tiến trình cần nguồn tại nguyên này, tuyến

mà tạo nó có thể điều chỉnh để thêm vào

Trang 10

 Trạng thái thức thi (Execute): Sau khi một tiến trình mới được tạo thành công

và điều chỉnh, nó chuyển sang trạng thái sẵn sàng (Ready) và vào trạng tháithực thi (Execute).Trong suốt trạng thái này, một tiến trình có thể truy cập CPU

và chạy.Trong suốt trạng thái thực thi , một tiến trình có thể truy cập CPU vàchạy.Trong suốt trạng thái thựcthi , một tiến trình có thể là một trong 3 trạngthái: sẵn sàng, chạy và rỗi (Idle).Một tiến trình ở trạng thái sẵn sàng sẽ đợichuyển sang trạng thái truy cập CPU và bắt đầu thực thi lệnh

Một tiến trình ở trạng thái rỗi là đang ngủ, đợi sự kiện bên ngoài xuất hiện trướckhi nó có thể chạy.Một tiến trình chuyển từ trạng thái sẵn sàng sang trạng thái chạy khi

mà nó được lập lịch để chạy Với đa tác vụ mà không ưu tiên (non-preemptivemultitasking), một tiến trình được lập lịch chạy trên CPU cho đến khi tạm ngừng hoặckết thúc

Một tiến trình có thể tạm dừng theo 2 cách: nó có thể tự dừng bởi việc báo chokernel, nó muốn nhường cho CPU và chuyển sang trạng thái sẵn sàng, và đợi đến lúcchạy lại.Tiến trình cũng có thể dừng bởi một hoạt động bên ngoài xảy ra.Khi mà mộttiến trình đợi một sự kiện, kernel hoàn toàn dừng tiến trình này và chuyển nó sangtrạng thái rỗi.Sau khi một sự kiện xảy ra rồi thì kernel chuyển tiến trình trở lại trạngthái sẵn sàng để đợi chạy lại

Trạng thái kết thúc (Terminal): Trạng thái cuối cùng trong vòng đời của tiếntrình là trạng thái kết thúc.Một tiến trình vào trạng thái kết thúc khi nó hoàn thànhchức năng của mình và đóng lại hoặc khi một tiến trình khác đóng nó.Khi một tiếntrình bị đóng hoặc tự đóng, tiến trình chuyển sang trạng thái chết (Dead).Tiến trình này

ở trạng thái chết (không hoạt động) cho đến khi kernel thu hồi tất cả các tài nguyêncủa nó.Sau khi tài nguyên được thu hồi, tiến trình bị kết thúc thoát khỏi trạng thái chết

và xóa khỏi hệ thống

Độ ưu tiên tiến trình iOS: iOS thực hiện chế độ ưu tiên để lập lịch các tiến trìnhtrên CPU.Tại thời điểm tạo, mỗi tiến trình được gán một trong 4 độ ưu tiên dựa trênmục đích của tiến trình.Độ ưu tiên là không đổi, chúng được gán khi một tiến trìnhđược tạo và không bao giờ thay đổi.Các độ ưu tiên:

 Critical: Dành riêng cho những tiến trình hệ thống thiết yếu mà giải quyếtnhững vấn đề cấp phát tài nguyên

Trang 11

 High: Được gán cho những tiến trình mà cung cấp đáp ứng nhanh, như tiếntrình nhận gói trực tiếp từ giao tiếp mạng -Medium: Độ ưu tiên mặc định sửdụng bởi hầu hết các tiến trình

 Low: Được gán cho những tiến trình cung cấp những tác vụ mang tính định

kỳ như bảng ghi lỗi… Độ ưu tiên các tiến trình cung cấp sự ưu đãi cho mộtvài tiến trình để truy cập CPU dựa trên sự quan trọng của nó đối với hệ thống

và iOS không thực hiện quyền ưu tiên.Một tiến trình có sự ưu tiên cao hơnkhông thể ngắt một tiến trình có độ ưu tiên thấp hơn, thay vào đó, tiến trình

có độ ưu tiên cao hơn thì có nhiều cơ hội hơn để truy cập CPU hơn

1.6 Kernel IOS

IOS Kernel không là một đơn vị mà là một tập các thành phần và chức nănglien kết chặt chẽ với nhau.iOS Kernel thực hiện các chức năng sau: Lập lịch tiến trình,quản lý bộ nhớ, cung cấp dịch vị retimes để trap (phát hiện) và handle (điều khiển)những ngắt phần cứng, duy trì timer (bộ định thời gian), và phát hiện ngoại lệ phầnmềm Các chức năng chính của Kernel:

Lập lịch: Tác vụ lập lịch các tiến trình được thực hiện bởi scheduler (bộ lậplịch) Scheduler quản lý tất cả các tiến trình trong hệ thống bằng cách sử dụng mộtchuỗi các hang đợi tiến trình mô tả trạng thái của mỗi tiến trình.Các hàng đợi này chứanội dung thông tin cho tiến trình ở trạng thái đó.Tiến trình chuyển từ trạng thái nàysang trạng thái khác khi mà scheduler di chuyển ngữ cảnh từ 1 hàng đợi tiến trình nàyđến hàng đợi tiến trình khác

Quản lý bộ nhớ: Bộ quản lý bộ nhớ của Kernel tại mức quá cao quản lý tất cảcác vùng nhớ có sẵn của iOS, bao gồm bộ nhớ chứa iOS của nó.Bộ quản lý bộ nhớ bathành phần riêng biệt, với những nhiệm vụ riêng

Có ba bộ quản lý bộ nhớ sau: Bộ quản lý Region, Bộ quản lý Pool, Bộ quản lýChunk

 Bộ quản lý Region: Định nghĩa và duy trì những region khác nhau trên mộtplatform.Bộ quản lý region có chức năng duy trì tất cả các region.Nó cung cấpcác dịch vụ cho phép những phần khác của iOS tạo region và gán các thuộc tínhcủa chúng.Nó cũng cho phép những phần khác truy vấn những region có sẵn, ví

dụ quyết định tổng lượng bộ nhớ có sẵn trên một platform

Trang 12

Hình 1.6: Sự phân mảnh bộ nhớ

 Bộ quản lý pool: Quản lý việc tạo ra các vùng nhớ pool, cấp phát và thu hồi cáckhối nhớ của pool Bộ quản lý pool là một thành phần quan trọng củaKernel.Trong khi scheduler quản lý cấp phát tài nguyên CPU để xử lý,bộ quản

lý pool cấp phát bộ nhớ cho các tiến trình.Tất cả các tiến trình phải thông qua

bộ quản lý bộ nhớ pool trực tiếp hoặc gián tiếp, để định ra vùng nhớ mà nó sửdụng.Bộ quản lý bộ nhớ được yêu cầu cho mỗi tiến trình sử dụng hàm hệ thốngchuẩn malloc và free để lấy và trả bộ nhớ.Bộ quản lý bộ nhớ hoạt động bởi việcduy trì danh sách khối nhớ rỗi cho mỗi pool, ban đầu mỗi pool chứa chỉ mộtkhối nhớ rỗi lớn bằngkích thước một pool.Khi bộ quản lý bộ nhớ pool yêu cầu

bộ nhớ,khởi tạo những khối nhớ có kích thước nhỏ hơn.Tại cùng một thờiđiểm,các tiến trình có thể giải phóng vùng nhớ trả về pool, tạo thành một sốvùng nhớ rối không liên tục nhau, nhiều kích thước, trường hợp này gọi là phânmảnh bộ nhớ

 Quản lý Chunk: Quản lý pool cung cấp nhiều cách hiệu quả để quản lý một tậphợp các khối có kích thước khác nhau.Tuy nhiên những tính năng này có chi

Trang 13

phí của nó, bộ quản lý pool tạ ra 32 byte overhead trên mỗi bộ nhớ.Mặc dùoverhead này không quan trọng lắm đối với khối dữ liệu lớn, đối với pool cóhàng ngàn khối dữ liệu nhỏ hơn thì overhead mới trở nên đáng quan tâm.

Để tạo thêm sự lựa chọn thì kernel cung cấp bộ quản lý bộ nớ khác gọi là bộquản lý bộ nhớ Chunk, nó có thể quản lý lượng lớn pool có nhiều khối nhớ nhỏ màkhông có overhead.Không giống như quản lý pool, bộ quản lý Chunk không tạo radanh sách vùng nhớ rỗi với kích thước khác nhau.Thay vào đó bộ quản lý chunk quản

lý một tập các khối nhớ cố định được chỉ định từ một trong các vùng nhớ pool.Trongmột vài trường hợp, bộ quản lý chunk có thể xem như là một bộ quản lý pool vùng nhớcon

Các chính sách thường được thực hiện là: Một tiến trình yêu cầu một vị trí củamooth khối nhớ từ một vùng nhớ pool đặc biệt.Một tiến trình sau đó gọi đến bộ quản

lý chunk để chia khối nhớ thành một chuỗi các chunk có kích thước cố định và nhỏhơn,.Sử dụng bộ quản lý chunk để định vị ra những vùng nhớ rối khi cần.Thuận lợi là

ổ đây chỉ có 32 byte overhead và bộ quản lý pool thì không bắt buộc cấp phát và lấylại hàng ngàn phân mảnh nhỏ hơn.Vì vậy khả năng phân mảnh trong pool giảm đángkể

Quản lý bộ đệm gói: Trong định tuyến gói dữ liệu, bất cứ hoạt động lưu trữ haychuyển dữ liệu đều phải cần có một nơi để lưu trữ dữ liệu trong khi dữ liệu đang đượcđịnh tuyến trên đường truyền.Thông thường thì tạo ra một bộ đệm để lưu trữ các góiđến trong khi hoạt động chuyển mạch đang hoạt động.Bởi vì khả năng định tuyến gói

là trung tâm của cấu trúc hệ điều hành iOS

IOS chứa thành phầnchuyên biệt để quản lý những vùng đệm này.Thành phầnnày được gọi là bộ quản lý vùng đệm bộ nhớ.iOS sử dụng thành phần này để tạo vàquản lý nhất quán một chuỗi các vùng đệm cho chuyển mạch trên mỗi platform

Bộ đệm trong vùng này được biết chung là những bộ đệm hệ thống.Bộ quản lývùng bộ đệm cung cấp một cách tiện lợi để quản lý một tập các bộ đệm có kích thước

cụ thể.Mặt dầu nó có thể được sử dụng để quản lý bất cứ loại bộ đệm nào, bộ quản lý

bộ đệm được sử dụng chính để quản lý những vùng bộ đệm gói.Những vùng đệm góiđược tạo từ các vùng nhớ pool có sẵn.Đểf tạo một vùng, bộ quản lý bộ đệm yêu cầu

Trang 14

một khối nhớ từ bộ quản lý pool và chia cho bộ đệm.Bộ quản lý bộ đệm gói sau đó tạomột danh sách cho tất cả các bộ đệm rỗi và theo dõi các vùng nhớ này.

Những vùng đệm có thể là động hay tĩnh, vùng bộ đệm tĩnh được tạo với số bộđệm cố định, không thêm bộ đệm vào cùng bộ đệm tĩnh này.Vùng bộ đệm động đượctạo với một số bộ đệm tối thiểu.Gọi là bộ đệm thường xuyên, có thể thêm hoặc xóa các

bộ đệm.Với các vùng nhớ động , nếu bộ quản lý bộ đệm nhận được yêu cầu khi vùngnhớ rỗng, nó cố gắng mở rộng vùng nhớ và đáp ứng yêu cầu ngay lập tức

Nếu nó không thể mở rộng vùng nhớ, thì yêu cầu bị lỗi và thực hiện mở rộng vùng nhớsau đó.vùng bộ đệm được phân lớp public (dùng chung) hoặc private (dùng riêng).Vùng public được sử dụng bởi bất cứ tiến trình nào của hệ thống Private được tạo chomột tập các tiến trình sử dụng

Bộ đệm hệ thống: Mỗi iOS đều có một tập các bộ đệm public định trước gọi lànhững bộ đệm hệ thống, những bộ đệm này được sử dụng cho tiến trình chuyển mạchcác gói dữ liệu và tạo gói (như gói keepalive, gói cập nhật định tuyến)

1.7 Trình điều khiển thiết bị

IOS chứa trình điều khiển thiết bị cho các thiết bị phần cứng, như flash card,NVRAM, nhưng đáng chú ý là trình điều khiển cho các giao tiếp mạng.Trình điềukhiển các giao tiếp mạng cung cấp những khả năng chính cho hoạt động của gói dữliệu tại đầu ra của giao tiếp

Mỗi thiết bị chứa hai thành phần chính: thành phần điều khiển và thành phần dữliệu Thành phần điều khiển có trách nhiệm quản lý tình trạng và trạng thái của thiết bị(ví dụ: shutdown trên một cổng) Thành phần dữ liệu có trách nhiệm đối với tất cả cácluồng hoạt động chuyển mạch gói dữ liệu Trình điều khiển thiết bị có quan hệ chặtchẽ với chức năng chuyển mạch gói

Trình điều khiển thiết bị giao tiếp mạng dựa trên hệ thống iOS thông qua mộtcấu trúc điều khiển đặc biệt gọi là IDB (interface descriptor block) IDB chứa toàn bộchức năng điều khiển thiết bị, dữ liệu, trạng thái thiết bị Ví dụ: địa chỉ IP,trạng tháicổng, thống kê gói là một trong các trường hiện tại trong IDB.iOS duy trì một IDB chomỗi giao tiếp hiện tại trên một platform

Cấu trúc chuyển mạch gói: Chuyển mạch gói là một trong các chức năng quantrọng nhất của router, hoạt động bao quát như sau:

Trang 15

 Một gói đến một cổng

 Địa chỉ đích của gói được kiểm tra và so sánh dựa vào danh sách đích đãbiết

 Nếu phù hớp, gói được chuyển tiếp ra cổng phù hợp

 Nếu không phù hợp, gói bị hủy.Rõ ràng vấn đề chuyển mạch không quáphức tạp, nhưng để chuyển mạch được nhanh thì vấn đề trở nên phức tạp.Tốc

độ hoạt động không chỉ dựa vào tốc độ CPU, còn có những nhân tố khác, khẳnăng thực thi của bus I/O tốc độ bộ nhớ đều có ảnh hưởng đến sự thực thicủa chuyển mạch.Đây là một thử thách lớn đối với các nhà phát triển iOS

Làm thế nào để tốc độ chuyển mạch nhanh nhất mà có thể giới hạn trên cácthành phần CPU, bộ nhớ, bus I/O.Khi mà kích thước và số mạng định tuyến tăng lên,những người phát triển iOS tiếp tục tìm ra những cách tốt nhất để giải quyết thử tháchthực thi này

Đầu tiên thì iOS chỉ có chức năng chuyển mạch nhưng đã được cải thiện về sau,một vài phương thức chuyển mạch dựa trên nhiều platform khác nhau.Ngày nay iOS

có thể chuyển mạch tới vài trăm ngàn gói trên một giây, sử dụng bạn định tuyến tới vàitrăm ngàn tuyến đi

Trang 16

1.8 Kiến trúc của hệ điều hành iPhone

Bao gồm các lớp sau :

Hình 1.8 : Kiến trúc hệ điều hành iPhone

Các lớp dưới cùng là nền tảng của hệ điều hành, phụ trách quản lý bộ nhớ, cácfile hệ thống, mạng, các hệ điều hành nhiệm vụ và tương tác trực tiếp với các phầncứng

Lớp Core OS : Lớp Core OS bao gồm các thành phần : -OS X Kernel -Match3.0 -BSD -Sockets -Security -Power Management -Key chain -Certifi cates -FileSystem -Bonjour

Lớp Core Services : Lớp Core Services cung cấp một trừu tượng trên các dịch

vụ được cung cấp trong lớp OS X Kernel.Nó cung cấp truy cập cơ bản để các dịch vụ

hệ điều hành iPhone và bao gồm các thành phần sau : Collection AddressBook Networking -Files Access-SQLite -Core Location -Net Services -Threading -Preferences -URL Utilities

-Lớp Media(Truyền thông): -Lớp Media cung cấp các dịch vụ đa phương tiện màbạn có thể sử dụng trong iPhone và iPad.Nó bao gồm các thành phần sau : -CoreAudio -OpenGL -Audio Mixing -Audio Recording -Video Playback -JPG,PNG,TIFF -PDF -Quartz -Core Animation -OpenGL ES

Trang 17

Lớp Cocoa Touch : Lớp Coscoa Touch cung cấp một lớp trừu tượng để khaibáo các thư viện khác nhau cho các lập trình iPhone và iPad, như sau:

Trang 18

CHƯƠNG 2: NGÔN NGỮ LẬP TRÌNH SWIFT2.1 Giới thiệu ngôn ngữ Swift

2.1.1 Ngôn ngữ lập trình bậc thấp và bậc cao

Có rất nhiều cách để ra lệnh cho một thiết bị thông minh (laptop, máy để bàn,smartphone, tablet…) làm chính xác những gì bạn muốn Cách chính xác nhất nhưnglại khá phức tạp là viết các dòng lệnh bằng… mã máy (mã nhị phân) hoặc sử dụng viết

mã Assembly Khi viết mã Assembly, bạn sẽ phải viết từng câu lệnh chi tiết cho nhữnghoạt động rất nhỏ, ví dụ như thay đổi một số trên bộ nhớ, thay đổi màu của một pixeltrên màn hình… nói cách khác là tất cả các hành động nhỏ nhất mà phần cứng có thểthực hiện

Nếu viết mã Assembly (hoặc mã máy), bạn có thể thực hiện những hành viphức tạp nhất, đúng-với-mong-muốn nhất Nhưng, hiển nhiên là khi sử dụng các ngônngữ bậc thấp (ngôn ngữ bậc thấp: xa với ngôn ngữ người và gần với ngôn ngữ máy)như mã máy hoặc mã Assembly, việc lập trình ứng dụng sẽ trở nên cực kỳ nhàm chán,vất vả và rất dễ mắc phải lỗi Việc viết ra Safari hay thậm chí là Flappy Bird bằng mãAssembly cũng sẽ là bất khả thi

Bởi vậy, bạn sẽ cần tới các ngôn ngữ lập trình bậc cao (high level) Thay vìthực hiện từng dòng lệnh nhỏ nhặt từ người lập trình viên, máy vi tính sẽ nhận một câulệnh "bậc cao" từ coder và tự thực hiện dòng lệnh này Các ngôn ngữ bậc cao giốngvới ngôn ngữ người ở chỗ chúng có cấu trúc ngữ pháp (syntax) rất rõ ràng với các giớihạn cụ thể về vị trí sắp xếp từ ngữ mà người dùng ngôn ngữ cần tuân theo

Để hiểu rõ về sự khác biệt giữa ngôn ngữ lập trình bậc cao và ngôn ngữ lập trình bậc thấp, hãy thử tưởng tượng khi bạn nhờ người bạn thân đưa cho mình một lon

Coca Nếu dùng ngôn ngữ lập trình bậc cao, bạn sẽ nói "Ê, ném cho tao lon Coca ở trên bàn!", và người bạn này sẽ biết cách để thực hiện hành vi này Nếu sử dụng ngôn ngữ Assembly, bạn sẽ phải nói đầy đủ đoạn văn sau: "Ngồi dậy Đặt 2 chân xuống sàn Dùng tay làm điểm tựa Đứng dậy khỏi ghế sofa Bước một bước bằng chân phải Bước bằng chân trái Cầm lon Coca bằng tay phải Quay về phía tao Bước một bước bằng chân phải…".

Nói ngắn gọn, bằng các ngôn ngữ bậc thấp, bạn sẽ phải mô tả tất cả các hành vi độc lập cần thiết để thực hiện toàn bộ tác vụ Thậm chí, nếu bạn quên không ra lệnh

Trang 19

"dùng tay làm điểm tựa", người bạn (máy vi tính) của bạn có thể bị ngã (gặp lỗi) khi thực hiện tác vụ.

Chính điều này buộc con người phải sử dụng các ngôn ngữ lập trình bậc cao Trong số các ngôn ngữ lập trình bậc cao, C là ngôn ngữ "kinh điển" nhất Đây là ông

tổ của nhiều ngôn ngữ lập trình phổ biến khác hiện nay, từ C++, Objective-C, C# cho đến cả Java và PHP Trong số các ngôn ngữ chịu ảnh hưởng/biến thể từ C, Objective-

C là lựa chọn truyền thống của Apple và cũng là nền tảng xây dựng nên iOS và Mac OS

Nhưng, khi C đã có tuổi đời lên đến 40 năm và khi Objective-C cũng đã có tuổi đời lên đến 30 năm, Apple cần sự thay đổi Câu trả lời là Swift

2.1.2 Ngôn ngữ lập trình dạng script

Script programming language, thường gọi là ngôn ngữ script, đang dần trở nên phổ biến hơn trước đây rất nhiều Thông thường, các ngôn ngữ lập trình bậc cao sẽ cầnđược biên dịch (compile) thành mã máy để có thể thực thi Quá trình biên dịch được thực hiện bởi compiler là khi các câu lệnh bậc cao (ví dụ như "lấy lon Coca") được chuyển thành các lệnh nhỏ, đơn giản mà máy tính có thể thực hiện

Dựa trên syntax đặc trưng của ngôn ngữ, các dòng lệnh mà con người (các lập trình viên) có thể đọc được sẽ được chuyển thành mã máy, và nếu như quá trình biên dịch thành công, bạn sẽ nhận được một ứng dụng thực sự Lưu ý rằng các file mã nguồn chưa qua biên dịch sẽ không có ý nghĩa gì với CPU cả

Tuy vậy, quá trình biên dịch mã nguồn có thể sẽ mất rất nhiều thời gian Như đãnói ở trên, nếu chưa đưa mã nguồn vào compiler, bạn sẽ không thể biết được liệu các dòng code mà bạn đã viết ra có thực sự hoạt động hoàn hảo hay không Trong rất nhiều trường hợp, các lỗi trong dòng code của bạn sẽ không bị phát hiện cho tới khi compiler thực hiện nhiệm vụ của mình, và thậm chí khi đã biên dịch xong, bạn sẽ phải chạy chương trình để phát hiện nốt những lỗi còn lại Tất cả những điều này khiến cho quá trình viết ứng dụng phần mềm trở nên rất chậm chạp

Ngôn ngữ script khác với các ngôn ngữ này Bạn có thể chạy các đoạn mã script vừa viết ra ngay lập tức, từ dòng này tới dòng tiếp theo Bạn có thể kiểm tra kết

Trang 20

quả của mình mà không cần chờ đợi quá trình biên dịch Điều này giúp cho quá trình phát triển ứng dụng nhanh và dễ dàng hơn rất nhiều.

Song, các ngôn ngữ script cũng có giới hạn của chúng Giới hạn đầu tiên là về tính năng: chúng không thể làm được các tác vụ phức tạp như các ngôn ngữ compile khác Tệ hơn, chúng bị giới hạn về hiệu năng xử lý Điều này khiến các ngôn ngữ script trở nên giới hạn hơn rất nhiều so với các ngôn ngữ compile và không được sử dụng để thực hiện các chương trình đòi hỏi tối ưu sức mạnh phần cứng

Như vậy, các ngôn ngữ dạng script như Python rất dễ viết và test (kiểm thử), song chúng không mạnh mẽ và cũng không đủ nhanh để thực hiện các tác vụ phức tạp của ứng dụng Nói cách khác, Python không thực sự phù hợp để viết các game nặng, vốn có yêu cầu phải tận dụng tối đa sức mạnh của thiết bị Các ngôn ngữ lập trình truyền thống (ví dụ như Objective-C) mang tới hiệu năng khi chạy trên iPhone/iPad, cho phép tạo ra các ứng dụng phức tạp như iMovie hoặc Call of Duty Song, việc sử dụng Objective-C thường đi kèm với một lượng lớn thời gian compile và test ứng dụng Việc học cách viết Objective-C cũng là một quá trình dài, có thể gây khó khăn với các lập trình viên ít kinh nghiệm

Nếu thực hiện được tất cả các lời hứa của Apple, Swift sẽ mang tất cả các điểm mạnh của cả 2 loại ngôn ngữ script và compile truyền thống Trong một số thử nghiệmbenchmark, Swift cho hiệu năng nhanh hơn Python và thậm chí là nhanh hơn cả Objective-C Trên bộ IDE (phần mềm lập trình) Xcode của Apple, mã nguồn Swift sẽ được đồ thị hóa dựa trên tính năng playground theo thời gian thực Điều này có nghĩa rằng lập trình viên có thể chạy và test mã nguồn Swift một cách dễ dàng không kém gìPython cả

Trong ví dụ được đưa ra tại WWDC, một lập trình viên đã lên sân khấu để thực hiện cảnh đồ họa bay lên/xuống cho khinh khí cầu theo định kỳ Để làm được điều này, anh ta cần sử dụng một hàm toán học đơn giản: hàm sin Sin tạo ra đồ họa hình gợn sóng khá đẹp, và bởi vậy hàm sin sẽ là khá hoàn hảo cho ví dụ của chúng ta

Trong màn demo trên sân khấu WWDC, lập trình viên Swift đã có thể gán hàm sin vào chuyển động của khinh khí cầu một cách dễ dàng Anh ta có thể theo dõi giá trị

Trang 21

hàm sin thay đổi khi chạy chương trình của mình, dựa trên một biểu đồ đơn giản hiển thị trên Xcode Điều này giúp cho nhà phát triển có thể dễ dàng hình dung ra chuyển động của quả bóng bay trên.

Trong các ví dụ tương tự, bạn có thể điều chỉnh các chuyển động một cách rất

dễ dàng Gần đây, một nhà phát triển ứng dụng thậm chí còn sử dụng Swift để tạo ra một phiên bản Flappy Bird sơ khai trong vòng… 17 phút! Thông thường, quá trình phát triển phần mềm đòi hỏi các lập trình viên vừa phải viết code, vừa phải thực hiện biên dịch (thông qua compiler), sau đó chạy chương trình và… nín thở hy vọng Tùy thuộc vào độ lớn của ứng dụng, quá trình compile và chạy thử ứng dụng có thể mất vàigiây, vài phút hoặc lâu hơn nữa

2.1.3 Những lợi ích của Swift

Khả năng phát triển ứng dụng di động và kiểm tra thành quả của mình theo thờigian thực sẽ giúp cho quá trình code của các lập trình viên trở nên nhanh và dễ dàng hơn rất nhiều Ngoài ra, việc không phải chạy chương trình compiler và các chương trình test quá thường xuyên cũng sẽ tiết kiệm được sức mạnh phần cứng cho nhà phát triển Thay vì tập trung kiểm tra, thử nghiệm các tính năng nhỏ lẻ, lập trình viên Swift

có thể dành nhiều thời gian để thực hiện các bài test ở mức độ tích hợp cao hơn một cách kỹ càng hơn

Lợi ích thứ 2 của Swift là các dòng code rất ngắn và dễ đọc Trong bài trình bàycủa Apple, 3 dòng code Objective C có thể gói gọn vào 1 dòng code Swift Điều này

sẽ đẩy nhanh quá trình phát triển ứng dụng và tăng hiệu quả cho quá trình bảo trì/vá lỗitrong tương lai

Swift hoạt động tương tự một phiên bản Objective C đơn giản, với các lớp đối tượng được đơn giản hóa, và các dòng mã được sắp xếp hợp lý Với Swift, Các nhà phát triển sẽ có môi trường runtime tương tự Objective C, do vậy nó rất quen thuộc và

Trang 22

dụng, vì vậy theo Apple nói thì lập trình viên có thể quản lý tốt hơn một ứng dụng để tránh sự cố tràn bộ nhớ.

Swift có thể làm việc liền mạch với Objective C, vì vậy các ứng dụng hiện tại

có thể được cập nhật bằng Swift Các nhà phát triển cũng có thể sử dụng các công cụ hữu ích của Objective C ngay chính trên Swift (có thể sống chung với mã C và

Objetive-C trong cùng một ứng dụng)

Swift tạo ra các ứng dụng có sức ép phần cứng thấp hơn Objective-C, chúng ta

sẽ được tận hưởng trải nghiệm game ấn tượng hơn trên các thiết bị iOS

2.1.4 Điểm yếu của Swift

Điểm yếu lớn nhất của Swift sẽ là tuổi đời quá trẻ của ngôn ngữ lập trình này

Cụ thể hơn, để sử dụng Swift, các nhà phát triển sẽ phải học lại một ngôn ngữ lập trìnhhoàn toàn mới Ngành công nghệ thường thích được làm chủ các công nghệ mới nhất, tuyệt vời nhất Song, mảng ứng dụng iOS cũng đã trở nên lớn mạnh tới mức có hàng nghìn người đã dành hàng tháng trời để làm chủ Objective-C; đào tạo Objective C cho iOS đã trở thành môyj ngành quan trọng; có những công ty chỉ tập trung vào ngôn ngữlập trình này (và iOS) Do Swift chắc chắn sẽ thay thế hoàn toàn Objective-C, các nhà phát triển ứng dụng iOS sẽ mất một khoảng thời gian đáng kể để làm chủ ngôn ngữ mới của Apple Điều này có thể làm giảm tốc độ phát triển của hệ sinh thái ứng dụng Apple

Một mối lo ngại khác có thể kể đến là các ứng dụng rác Do Swift sẽ giúp quá trình phát triển ứng dụng trở nên dễ dàng hơn trước đây rất nhiều, số lượng ứng dụng chất lượng kém xuất hiện trên gian hàng App Store có thể sẽ ra tăng Song, đây cũng không hẳn là một mối lo ngại thực sự cho Apple và người dùng của Quả táo Trải qua giai đoạn chuyển tiếp này, Swift sẽ giúp mang các ứng dụng iOS và Mac lên một tầm cao mới

Trang 23

2.2 Biến, hằng số trong ngôn ngữ lập trình Swift

2.2.1 Những quy ước cơ bản trong ngôn ngữ lập trình Swift

 Cuối câu lệnh không cần dấu chấm phẩy “;” (giống ngôn ngữ lập trình Visual Basic) Nhưng nếu muốn viết 2 câu trên cùng một dòng duy nhất, bạn cần phải

sử dụng dấu chấm phẩy

 Phân biệt chữ HOA và chữ thường, nghĩa là biến X sẽ khác biến x

 Các phép tính: Cộng + ; Trừ - ; Nhân * ; Chia / ;

 Các toán tử so sánh: Bằng == ; Không bằng != ; Lớn hơn > ; Lớn hơn hoặc bằng

>= ; Bé hơn < ; Bé hơn hoặc bằng <= ;

 Dấu = tương đương phép gán, khi bạn viết a = 1 nghĩa là giá trị 1 sẽ được gán cho biến a

 Giữa biến và toán tử nên cách nhau một khoảng trắng “ ” Khi tạo thói quen viết như thế này còn giúp các bạn dễ dàng hơn trong việc đọc code, kiểm tra lỗi

2.2.2 Biến (Variable) và Hằng số (Constant), cách khai báo biến và hằng số

 Biến (Variable): là vùng trống trong bộ nhớ máy tính dành cho một kiểu dữ liệu nào đó và có đặt tên Giá trị của biến có thể thay đổi được Để khai báo biến ta dùng từ khoá var

 Hằng số (Constant): gọi đầy đủ là biến Hằng số, nó cũng là biến, có thể được khai báo là biến thường hay biến con trỏ Giá trị của hằng số không thể thay đổiđược Để khai báo hằng số ta dùng từ khoá let

 Khi khai báo hằng số bạn phải gán cho nó một giá trị xác định Một hằng số không được phép rỗng

2.3 Các kiểu dữ liệu trong ngôn ngữ lập trình Swift

Swift cung cấp đầy đủ các kiểu dữ liệu như trong Objective-C Có các kiểu dữ liệu cơ bản sau:

 Character: dùng để chứa ký tự

 String: dùng để chứa chuỗi

 Int: dùng để chứa các số nguyên

 Float: dùng để chứa các số có giá trị thập phân

 Double: như kiểu Float nhưng có phần thập phân chính xác hơn

Trang 24

 Bool: kiểu logic, mang 2 giá trị true hoặc false

Swift cũng cung cấp kiểu collection, Array và Dictionary Trong Swift, chúng ta không cần khai báo kiểu dữ liệu sẽ dùng

Bạn có thể gán kiểu dữ liệu khi khai báo một biến hay hằng số mà bạn đã

biết kiểu dữ liệu sẽ được lưu

Ví dụ:

2.3.1 Xử lý Chuỗi (String)

Các thao tác thường dùng với chuỗi:

 Tạo chuỗi rỗng: có thể dùng “” hoặc String()

 Kiểm tra chuỗi rỗng: dùng <ten chuoi>.isEmpty Hàm này sẽ trả về kết quả true hoặc false

 Đếm độ dài chuỗi: countElements(<ten chuoi>)

 Nối 2 chuỗi: dùng toán tử +

 So sánh 2 chuỗi: dùng ==

 Truyền biến vào chuỗi: dùng "\(<ten b

Trang 26

2.3.2 Ép kiểu dữ liệu

Swift là loại ngôn ngữ lập trình Strongly Typed Language nên kiểu giá trị của biến/hằng sau khi khai báo sẽ không thể thay đổi hoặc pha trộn lẫn nhau, bạn buộc phải thực hiện ép kiểu nếu thực hiện những phép toán giữa 2 giá trị khác kiểu dữ liệu

 Chuyển từ Chuỗi sang Số: <chuoi>.toInt()

 Chuyển từ Số sang Chuỗi: String(<chuoi>)

 Chuyển từ số Tự nhiên sang số Thực: Double(<so>)

 Chuyển từ số Thực sang số Tự nhiên: Int(<so>)

Ví dụ:”

2.3.3 Mảng (Array) và Từ điển (Dictionary)

 Mảng (Array): là tập hợp các phần tử có cùng kiểu dữ liệu

 Từ điển (Dictionary): là kiểu tập hợp trong đó có hai thành phần chính liên hệ vớinhau là khóa (key) và giá trị (value)

Cả hai đều sử dụng dụng cặp ngoặc vuông (brackets) “[ ]” để khai báo Tuy nhiên

có sự khác nhau trong khai báo cũng như cách sử dụng của 2 kiểu này

2.3.4 Mảng (Array)

 Khai báo Mảng: var <ten mang> = [<phan tu 1>,<phan tu 2>, ,<phan tu n>]

 Truy xuất đến các phần tử trong mảng: <ten mang>[<stt phan tu>]

 Thêm phần tử vào cuối mảng: <ten mang> += [<phan tu>]

 Thay giá trị phần tử trong mảng: <ten mang>[<stt phan tu>] = <gia tri>

Phần tử đầu tiên trong mảng có số thứ tự bắt đầu là 0 Bạn có thể gán kiểu dữ liệucho mảng khi khai báo nếu biết chính xác kiểu dữ liệu mà mảng sẽ chứa

Trang 27

2.3.5 Mảng 2 chiều (Array of Array):

Khai báo:

 Lấy giá trị phần tử: <ten mang>[<stt phan tu>]

 Lấy giá trị của phần tử trong phần từ: <ten mang>[<stt phan tu>][<stt phan tu ben trong>]

 Lấy giá trị phần tử cuối: <ten mang>.last

 Thay đổi giá trị phần tử: <ten mang>[<stt phan tu>][<stt phan tu ben trong>] =

<gia tri moi>

 Thêm phần tử: <ten mang> = [ [<phan tu m.1>,<phan tu m.2>, ,<phan tu m.n>] ]

 Đếm số phần tử: <ten mang>.count

Ví dụ:

Trang 28

2.3.6 Từ điển (Dictionary)

 Khai báo: var <ten tu dien> = [<key 1>:<value 1>,<key 2>:<value 2>, ,<key n>:<value n> ]

 Truy xuất: <ten tu dien>[<key>]

 Thêm mới: <ten tu dien>[< key>] = <gia tri>

 Thay đổi giá trị: <ten tu dien>[<key>] = <gia tri>

 Xoá key: <ten tu dien>.removeValueForKey(<key>)

Bạn có thể gán kiểu dữ liệu cho mảng khi khai báo nếu biết chính xác kiểu dữ liệu mà mảng sẽ chứa

Ví dụ:

2.3.7 Từ điển 2 chiều

Khai báo:

 Truy xuất: <tên từ điển>:[<từ khoá>]

 Truy xuất 1 giá trị bên trong: <tên từ khoá>:[<từ khoá>]![stt phần tử]

 Thêm mới: <tên từ điển>[<khoá mới>] = [<giá trị m.1>, <giá trị m.1>, , <giá trị m.n>]

 Thay đổi giá trị:

Trang 29

Ví dụ:

2.4 Table View và Navigation Controller.

Ứng dụng checklists được xây dựng trên hai thành phần UI(User Interface) thường được sử dụng nhất trong IOS đó là: Table View và Navigation Controller

2.4.1 Table View

Table View là một thành phần của giao diện người dùng (User Interface – UI) thông dụng trong ứng dụng iOS Phần lớn các ứng dụng sử dụng Table View để hiển thị danh sách dữ liệu (data) Ví dụ dễ hiểu nhất là 1 ứng dụng được xây dựng sẵn trongđiện thoại Danh sách liên lạc của bạn được hiển thị dưới dạng bảng (table) Một ví dụ khác nữa là ứng dụng Mail Nó sử dụng Table View để hiển thị hòm thư của bạn, và danh sách các emails Không chi được thiết kế để hiển thị chữ, Table View cho phép bạn hiển thị dữ liệu dưới dạng ảnh Ứng dụng Youtube và Airnbnb là những ví dụ điểnhình của cách sử dụng đó

UITableViewDelegate và UITableViewDataSource:

Trang 30

cách linh hoạt để quản lý được các loại dữ liệu khác nhau Bạn có thể hiển thị một danh sách các quốc gia, hoặc danh sách điện thoại Vậy làm thế nào để bạn truyền cho UITableView danh sách dữ liệu để hiển

thị? UITableViewDataSource là câu trả lời UITableViewDataSource là kết nối giữa dữ liệu của bạn với Table View Giao thức

(protocol) UITableViewDataSource khởi tạo 2 phương thức cần thiết, đó

là tableView:cellForRowAtIndexPath vàtableView:numberOfRowsInSection m

à bạn cần phải thực thi (implement) Thông qua việc thực thi các phương thức này, bạn sẽ chỉ ra cho Table View số hàng (row) để hiển thị và dữ liệu cho từnghàng

 UITableViewDelegate lại khác, phụ trách giao diện của UITableView Các phương thức tùy chọn của các giao thức cho phép bạn quản lý chiều cao của hàng trong bảng, tái trật tự các ô (cell) trong bảng…

2.4.2 Navigation Controller

Navigation Controller cho phép bạn xây dựng các cấp bậc của các screen, tức làcấp bậc từ screen này tới screen khác Nó sẽ thêm một thanh điều hướng ở trên cùng với một tiêu đề và một nút Back

Trang 31

CHƯƠNG 3: TÌM HIỂU PHẦN MỀM XCODE VÀ IOS SIMULATOR3.1 Phần mềm Xcode Thông Qua Bản Tải Về Từ Trang Dành Cho Developer

Trang 32

Tiếp theo bạn lựa chọn View Download.

Trang 33

- Cài Đặt Thông Qua Apple Mac Store

 Đây là cách phổ biến nhất, vì việc tải Xcode trên Apple Store là miễn phí, vàchỉ cần bạn có một tài khoản Apple ID là được, không yêu cầu phải làDeveloper ID

 Bạn chỉ cần truy cập vào Apple Mac Store và tìm kiếm Xcode, bạn sẽ thấy kếtquả là phần mềm Xcode Free, công việc bây giờ là bạn chỉ cần Install và chờđợi hoàn tất

Hình 3.1.4 Cài đặt Xcode qua Apple Mac Store

 Trong App Store bạn cũng có thể tìm được nhiều giáo trình, bài giảng về lậptrình ứng dụng bằng Xcode

Ngày đăng: 27/01/2016, 15:06

HÌNH ẢNH LIÊN QUAN

Hình 3.1.6 Giao diện Xcode khi mở lên - Tìm hiểu lập trình ứng dụng IOS và xây dựng ứng dụng lập danh sách những công việc cần làm cho sinh viên
Hình 3.1.6 Giao diện Xcode khi mở lên (Trang 31)
Hình 3.1.10 Chọn  nơi  lưu  Project - Tìm hiểu lập trình ứng dụng IOS và xây dựng ứng dụng lập danh sách những công việc cần làm cho sinh viên
Hình 3.1.10 Chọn nơi lưu Project (Trang 33)
Hình 3.1.2.1 Lựa chọn thiết bị iOS Simulator - Tìm hiểu lập trình ứng dụng IOS và xây dựng ứng dụng lập danh sách những công việc cần làm cho sinh viên
Hình 3.1.2.1 Lựa chọn thiết bị iOS Simulator (Trang 35)
Hình 3.1.2.4 Vùng Debug area - Tìm hiểu lập trình ứng dụng IOS và xây dựng ứng dụng lập danh sách những công việc cần làm cho sinh viên
Hình 3.1.2.4 Vùng Debug area (Trang 37)
Hình 3.1.2.5 Đánh  dấu Breakpoint - Tìm hiểu lập trình ứng dụng IOS và xây dựng ứng dụng lập danh sách những công việc cần làm cho sinh viên
Hình 3.1.2.5 Đánh dấu Breakpoint (Trang 38)
Hình 3.1.2.6 Thu gọn  đoạn code cho dễ nhìn - Tìm hiểu lập trình ứng dụng IOS và xây dựng ứng dụng lập danh sách những công việc cần làm cho sinh viên
Hình 3.1.2.6 Thu gọn đoạn code cho dễ nhìn (Trang 38)
Hình 3.2.1 Mở iOS Simulator trong Menu - Tìm hiểu lập trình ứng dụng IOS và xây dựng ứng dụng lập danh sách những công việc cần làm cho sinh viên
Hình 3.2.1 Mở iOS Simulator trong Menu (Trang 40)
Hình 3.2.2 Trong menu chọn xoay màn hình iOS Simulator - Tìm hiểu lập trình ứng dụng IOS và xây dựng ứng dụng lập danh sách những công việc cần làm cho sinh viên
Hình 3.2.2 Trong menu chọn xoay màn hình iOS Simulator (Trang 42)
Hình 3.2.6 Tải thêm các iOS Simulator phiên bản  cũ  hoặc tài liệu - Tìm hiểu lập trình ứng dụng IOS và xây dựng ứng dụng lập danh sách những công việc cần làm cho sinh viên
Hình 3.2.6 Tải thêm các iOS Simulator phiên bản cũ hoặc tài liệu (Trang 44)
Hình 3.2.10 Paste từ Mac OS vào iOS Simulator - Tìm hiểu lập trình ứng dụng IOS và xây dựng ứng dụng lập danh sách những công việc cần làm cho sinh viên
Hình 3.2.10 Paste từ Mac OS vào iOS Simulator (Trang 46)
Hình 4.3.5. Giao diện chỉnh sửa mục công việc - Tìm hiểu lập trình ứng dụng IOS và xây dựng ứng dụng lập danh sách những công việc cần làm cho sinh viên
Hình 4.3.5. Giao diện chỉnh sửa mục công việc (Trang 53)
Hình 4.3.5 Giao diện trong mục công việc - Tìm hiểu lập trình ứng dụng IOS và xây dựng ứng dụng lập danh sách những công việc cần làm cho sinh viên
Hình 4.3.5 Giao diện trong mục công việc (Trang 54)
Hình 4.3.6 Giao diện thêm công việc trong mục - Tìm hiểu lập trình ứng dụng IOS và xây dựng ứng dụng lập danh sách những công việc cần làm cho sinh viên
Hình 4.3.6 Giao diện thêm công việc trong mục (Trang 56)
Hình 4.3.7. Giao diện sau khi thêm công việc - Tìm hiểu lập trình ứng dụng IOS và xây dựng ứng dụng lập danh sách những công việc cần làm cho sinh viên
Hình 4.3.7. Giao diện sau khi thêm công việc (Trang 57)
Hình 4.3.8 Giao diện sau khi thêm công việc - Tìm hiểu lập trình ứng dụng IOS và xây dựng ứng dụng lập danh sách những công việc cần làm cho sinh viên
Hình 4.3.8 Giao diện sau khi thêm công việc (Trang 58)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w