Lập trình iOS Cơ bản

lập trình ios, lập trình ios cơ bản, ios cơ bản, học lập trình, lập trình di động

[Objective-C] Bài 2: Ứng dụng Hello World hoạt động như thế nào? — 01/03/2014

[Objective-C] Bài 2: Ứng dụng Hello World hoạt động như thế nào?

[Bài viết được dẫn nguồn từ: http://VietDevelopers.com – Học viện lập trình Online]

Tôi hy vọng bạn sẽ thích thú với bài hướng dẫn đầu tiên và hoàn thành ứng dụng đầu tay của bạn. Trước khi chúng ta thảo luận về bài hướng dẫn tiếp theo và xây dựng một ứng dụng phức tạp hơn, hãy cùng nhau nhìn lại một cách kỹ càng hơn về ứng dụng Hello World. Điều đó sẽ giúp bạn hiểu hơn về cú pháp của ngôn ngữ Objective-C và cách thức hoạt động của ứng dụng.

Simon Sg – Appcoda.com

Ở bài trước chúng ta đã từng bước xây dựng nên ứng dụng Hello World. Tuy nhiên xuyên suốt bài hướng dẫn đó, chắc hẳn bạn sẽ thắc mắc một vài câu hỏi như:

  • Các file .xib, .h và .m là gì?
  • Một đoạn code nằm trong “showMessage” có ý nghĩa gì?
  • Chuyện gì sẽ xảy ra sau khi bạn tap vào button Hello World? Làm sao để button này có thể bắt được hành động (action) showMessage ?
  • Nút “Run” trong Xcode hoạt động như thế nào?

Mình muốn bạn tập trung vào việc khám phá môi trường làm việc của Xcode, vì vậy mình đã không giải thích bất kỳ điều gì về Xcode ở bài trước. Tuy nhiên, điều đó là hết sức cơ bản đối với mọi developer để hiểu được chi tiết, cụ thể đẳng sau những dòng code,  và nắm bắt được các khái niệm cơ bản của lập trình iOS. Đối với một số khái niệm kỹ thuật, có thể sẽ khó hiểu hơn một chút nếu bạn không có kiến thức cơ bản về lập trình. Tuy nhiên đừng lo lắng quá, đây mới là ởi đầu. Ở các bài viết tiếp theo bạn sẽ viết nhiều code hơn, và bạn sẽ hiểu hơn về lập trình iOS. Đơn giản là cố gắng hết mình 😀

1. Các file Interface Builder, Header và Implementation (thực thi):

Câu hỏi đầu tiên là: Các file .xib, .h và .m là gì? Đây là một câu hỏi khá hay. Dưới phần Project Navigator (Điều hướng project). bạn có thể nhận ra 3 loại file – .xib, .h, .m. (Nếu bạn mở rộng thư mục Supporting Files, bạn sẽ nhận ra các loại file khác nữa như là plist hay framework. Tuy nhiên hãy tạm quên mấy file này đi. Chúng ta sẽ thảo luận về chúng sau.

.xib – Đối với các file có đuôi mở rộng là .xib, chúng là các file về giao diện (hay còn gọi là Interface Builder), các file này chứa giao diện người dùng (UI – User Interface) Nếu bạn mở file .xib, Xcode sẽ tự động chuyển sang chế độ giao diện – Interface Builder để bạn có thể sửa đổi giao diện người dùng cho ứng dụng của bạn bằng cách kéo và thả (drag-and-drop).

Interface Builder  trong Xcode.

.h và .m – Các file có đuôi mở rộng .h, chúng là các file header, trong khi các file có đuôi mở rộng là .m, chúng là các file thực thi – implementation. Giống như các ngôn ngữ lập trình khác, source code của Objective-C được chia thành 2 phần: Interface và Implementation.

Để giúp bạn hiểu rõ, chúng ta hãy đưa ra 1 ví dụ tương đồng, ví dụ là cái điều khiển TV. Thật thuận tiện để tăng giảm âm lượng của TV với một điều khiển từ xa không dây. Để tăng âm lượng, bạn nhấn nút “Volume +”. Để chuyển kênh, bạn đơn giản chỉ cần nhấn và số kênh trên điều khiển. Cho phép mình hỏi bạn 1 câu: Bạn có biết chuyện gì xảy ra khi bạn nhấn vào nút “Volume – Âm lượng” không? Thực ra là không, mình tin rằng phần lớn mọi người không hề biết cách thức điều khiển TV giao tiếp với TV và điều khiển âm lượng của chiếc TV đó. Đó là điều mà chúng ta biết, cái nút âm lượng mà chúng ta sử dụng để thay đổi âm lượng. Trong ví dụ này, cái nút mà bạn tương tác thì gọi là “Interface” và những việc được thực hiện đằng sau hành động nhấn vào nút đó thì gọi là “Implementation – thực thi”.

Chắc hẳn bây giờ bạn đã hình dung được Interface và Implementation rồi. Hãy quay lại với code. Trong Objective-C,  các Interface  của 1 class (lớp) được tổ chức trong file .h. Chúng ta thường sử dụng cú pháp @interface để khởi tạo interface cho 1 class. Hãy xem trong file HelloWorldViewController.h,  hay còn gọi là file header:

@interface HelloWorldViewController : UIViewController

-(IBAction)showMessage;

@end

Nó bắt đầu với @interface  và theo sau là tên class HelloWorldViewController. Bên trong, ta khởi tạo một action “showMessage”, hay còn được biết đến với một phương thức gọi.

Giống như nút “Volume”, rõ ràng rằng chúng ta không hề biết hành động (action) showMessage làm gì. Chúng ta chỉ hiểu rằng nó dùng để hiển thị 1 thông báo lên màn hình. Còn việc thực thi thì được đặt trong file thực thi HelloWorldViewController.m:

@implementation HelloWorldViewController

// I've removed other methods for better reading. Focus on the showMessage method first.

- (IBAction)showMessage
{
UIAlertView *helloWorldAlert = [[UIAlertView alloc]
initWithTitle:@"My First App" message:@"Hello, World!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];

// Display the Hello World Message
[helloWorldAlert show];
}

@end

Như bạn thấy ở trên, bạn sử dụng việc khai báo “@implementation” để khai báo 1 sự thực thi. Bên trong phương thức “showMessage”, có dòng code để định nghĩa việc hiển thị thông báo tin nhắn trên màn hình. Bạn có thể không hiểu bất kỳ dòng code nào trong phương thức showMessage. Nói ngắn gọn, các dòng code đó tạo 1 UIAlertView với tiêu đề là “My First App”, và dòng thông báo với nội dung “Hello, World“. Sau đó nó sẽ được gọi với phương thức “show” và yêu cầu iOS hiển thị một pop-up (cửa số bật lên) để hiển thị thông báo Hello World trên màn hình.

2. Đằng sau việc nhấn(tap) và chạm (touch):

Việc gì đã xảy ra sau hành động nhấn vào nút Hello World? Làm thế nào mà nút Hello World có thể gọi (invoke) phương thức (method) showMessage để hiển thị thông báo “Hello, World”?

Hãy nhớ lại rằng bạn đã thiết lập 1 kết nối giữa button Hello World và hành động showMessage trong Interface Builder. Hãy mở lại file HelloWorldViewController.xib và chọn vào nút Hello World. Click vào button “Sent Events” ở trong phần tiện ích Utillity Area để mở Sent Events.

Khu vực Sent Events chỉ ra cho bạn tất cả kết nối (connection) giữa các sự kiện (event) và các hành động (action). Như bạn thấy ở hình trên thì sự kiện “Touch Up Inside” đã được kết nối tới hành động showMessage. Trong iOS. các ứng dụng đều là theo hướng sự kiện (event-driven). Các đối tượng (object) như UIButton thường lắng nghe các sự kiện (như chạm, nhấn). Khi bắt được 1 sự kiện, đối tượng sẽ gọi (call) đến hành động đã được cài đặt trước đó để kết nối với sự kiện này (event).

Trong ứng dụng Hello World của chúng ta, khi người dùng nhấn ngón tay vào button, thì sự kiện Touch Up Inside sẽ được bắt. Do đó, nó sẽ gọi đến hành động showMessage để hiện thị thông báo Hello World.

Hình minh họa dưới đấy sẽ khái quát lại những luồng sự kiện và những gì mình vừa mô tả.

3. Đằng sau việc nhấn nút “Run”:

Khi bạn click vào nút Run, Xcode sẽ tự động chạy Simulator và chạy ứng dụng của bạn. Tuy nhiên chuyện gì xảy ra đằng sau việc nhấn nút Run? Là một lập trình viên, bạn cần phải nhìn khái quát toàn bộ quá trình đó.

Toàn bộ quá trình có thể chia ra làm 3 giai đoạn: Biên dịch (compile), đóng gói (package) và chạy (run).

Biên dịch (Compile): Bạn có thể nghĩ rằng iOS có thể hiểu được code Objective-c. Trong thực tế, iOS chỉ đọc được ngôn ngữ máy (machine code). Code Objective-C là chỉ dành riêng cho bạn, cho người lập trình viên viết và đọc. Để khiến iOS hiểu được mã nguồn code (source code) ứng dụng của bạn, chung ta cần phải đi qua một quá trình dịch ngôn ngữ Objective-C sang ngôn ngữ máy. Quá trình này thường được xem là “biên dịch – compile”. Xcode đã được kèm theo 1 trình biên dịch được xây dựng sẵn để biên dịch mã nguồn code.

Đóng gói (Package): Khác với mã nguồn, một ứng dụng thường chứa đựng các file tài nguyên như ảnh (image), văn bản, file xib…Tất cả tài nguyên này được đóng gói lại để tạo nên ứng dụng cuối cùng.

Chúng ta gọi 2 tiến trình trên là tiến trình “xây dựng – build”.

Chạy (Run): Việc này sẽ khởi chạy Simulator và nạp ứng dụng của bạn vào.

Note: Bản gốc được viết từ website appcoda.com và được dịch bởi VietDevelopers.com. Mọi trích dẫn, hay copy vui lòng ghi rõ nguồn và được sự đồng ý của tác giả. Xin cảm ơn và chúc các bạn học tốt!

Khả Chương.

[Objective-C] Bài 1: Hello World —

[Objective-C] Bài 1: Hello World

Chào các bạn,

Blog này được lập ra với mục đích cung cấp các bài viết hướng dẫn lập trình cơ bản cho những người mới bước chân vào nghề lập trình. Mở đầu là loạt bài về hướng dẫn lập trình iOS 7 cơ bản. Mong các bạn nhiệt tình ủng hộ và đóng góp các bài viết chất lượng để cộng đồng Việt Developers ngày càng phát triển nhé.

Sau đây chúng ta sẽ cùng khám phá về một mảng lập trình không hề mới nhưng cũng không hề hết “hot”, đó là mảng lập trình mobile. Và chúng ta sẽ cùng nhau nghiên cứu cụ thể một mảnh ghép không phải là nhỏ trong mảng mobile, đó là lập trình phát triển ứng dụng iOS. Để phát triển được ứng dụng iOS bạn phải cần:

– Máy Mac cài hệ điều hành Mac OS  X 10.8 trở lên.

– Nếu bạn không có máy Mac thì bạn có thể cài hệ điều hành ảo trên Windows, bạn có thể vào đây và làm theo hướng dẫn: Link

– Sau khi có hệ điều hành Mac OS X 10.8 trở lên rồi, bạn cần phải có 1 tài khoản của Apple, để có thể truy cập vào iTunes để cài Xcode.

1. Giới thiệu qua về Xcode và cách cài đặt:

Để có thể phát triển được ứng dụng iOS, bạn chỉ cần cài đặt XCode. XCode là một môi trường phát triển tổng hợp ( Integrated development environment – IDE) do Apple cung cấp. XCode cung cấp hầu hết mọi thứ để bạn có thể bắt tay vào việc phát triển 1 ứng dụng, như là bộ phát triển phần mềm ( Software Development Kit –  SDK), trình biên soạn giao diện người dùng (User Interface – UI)…Đồng thời XCode cũng cung cấp máy ảo (simulator) để bạn có thể test ứng dụng ngay trực tiếp được khi bạn không có 1 chiếc iPod, iPhone, hay iPad để test thử thì chạy trên máy ảo là 1 điều không thể tuyệt vời hơn. Như vậy việc học lập trình iOS không cần phải đầu tư quá nhiều về mặt tiền bạc phải không? Bạn chỉ cần chăm chỉ là Ok rồi.

Để download XCode thì bạn ứng dụng App Store trên hệ điều hành Mac của bạn, như sau:

Trong App Store, bạn chỉ cần gõ  “Xcode” trên thanh tìm kiếm là bạn sẽ thấy và nhấn vào nút “Free” để cài đặt. Sau khi bạn download và cài đặt xong, thì icon của XCode sẽ xuất hiên trên Launchpad như thế này:

Như vậy là đã cài xong, giao diện của XCode sẽ như thế này:

Như vậy là đã xong rồi, cùng bắt tay vào code Hello World cổ điển nào 😀

2. Hello World – Chào mừng bạn đến với thế giới lập trình iOS

Ở bài hướng dẫn này chúng ta sẽ cùng nhau xây dựng 1 ứng dụng cơ bản, chạm vào nút Hello và sẽ thông báo ra dòng chữ “Hello, World!”. Hầu hết người học lập trình đều sẽ trải qua bài học đầu tiên này, nên các bạn không cần phải căng thẳng quá nhé. Cứ làm và làm rồi ắt sẽ hiểu. Hehe.

Giao diện sau khi đã xây dựng:

Mở XCode ra, ban đầu XCode sẽ hiển thị ra 1 bảng chào mừng có dạng như sau:

Bạn hãy chọn vào dòng  “Create a new Xcode project” để tạo 1 project mới. Sau đó Xcode sẽ hiển thị ra các dạng template cho project của bạn (Chúng ta sẽ thảo luận sau về phần này). Với ứng dụng Hello World này, chúng ta sẽ chọn “Empty Application”  rồi nhấn Next.

Bước tiếp theo là điền các thông tin cơ bản cho project của bạn như sau:

Bạn có thể điền như sau:

  • Product Name: HelloWorld – tên ứng dụng của bạn.
  • Company Identifier: com.appcoda – Thực ra đây là tên miền của bạn, nếu bạn không có thì bạn không cần điền.
  • Class Prefix: HelloWorld – Xcode sử dụng tiền tố lớp để đặt tên lớp tự động. Trong tương lai bạn có thể đặt tiền tố cho riêng bạn hoặc thậm chí là bỏ trống phần này Tuy nhiên trong bài này chúng ta sẽ để tiền tố là “HelloWorld”.
  • Devices: iPhone – Với ứng dụng này chúng ta sẽ chỉ phát triển cho iPhone .
  • Use Core Data: [bỏ tích] –  Hiện tại ứng dụng của bạn không cần đến Core Data.

Bạn chọn Next để tiếp tục. Sau đó Xcode sẽ yêu cầu bạn chọn nơi để lưu project “Hello World”.Bạn hãy chọn 1 thư mục ví dụ như là Desktop.Sau đó nhấn Create để tiếp tục.

Sau khi tạo xong thư mục project, giao diện Xcode hiện giờ sẽ như thế này:

3. Làm quen với không gian làm việc của Xcode

Trước khi bắt tay vào việc code ứng dụng đầu tay của bạn, hãy dành một vài phút để xem qua môi trường làm việc của Xcode. Ở bên phía tay trái là thanh điều hướng project (Project Navigator). Bạn có thể tìm thấy tất cả các file trong project ở phần này.Phần ở giữa là khu vực biên soạn (Editor Area). Bạn có thể thiết lập cài đặt project, sửa các file class, giao diện người dùng…Phần này sẽ hiển thị phụ thuộc vào loại file mà bạn chọn.

Phần phía bên tay phải là phần tiện ích (Utility Area). Phần này hiển thị các thuộc tính của file và cho phép bạn truy cập đến phần Giúp đỡ nhanh – Quick Help. Nếu Xcode không hiển thị phần này, bạn có thể chọn vào nút hiển thị phía tay phải ở trên thanh toolbar để bật nó lên.

Cuối cùng là thanh toolbar. Nó cung cấp nhiều chức năng khác nhau để chạy ứng dụng của bạn, chuyển đổi trình soạn thảo, hiển thị không gian làm việc.

4. Chạy ứng dụng lần đầu tiên

Mặc dù bạn chưa hề viết 1 dòng code nào, nhưng bạn hãy cứ thử chạy ứng dụng của bạn trên Simulator 1 lần xem. Nó sẽ cung cấp 1 cái nhìn tổng thể để bạn có thể hình dung được cách thức xây dựng và test ứng dụng của bạn trên Xcode. Để chạy ứng dụng, bạn chỉ cần nhấn vào nút “Run” ở trên thanh công cụ – toolbar.

Xcode sẽ tự động build (xây dựng) ứng dụng và chạy ứng dụng đó trên Simulator. Giao diện của Simulator sẽ có dạng như sau:

Một màn hình màu xám và chẳng có gì sất cả. Bình thường thôi, vì ứng dụng của bạn chưa hề hoàn thành mà, đây chỉ là lần chạy đầu tiên. Để dừng chạy ứng dụng của bạn, hãy nhấn vào nút “Stop” ở trên thanh công cụ.

Mặc định, Xcode sẽ sử dụng iPhone Retina (3.5-inch) cho simulator. Bạn có thể chọn các simulator khác nhau để test ứng dụng của bạn.

5. Tiếp tục Code nào

Tiếp túc với viếc thêm 1 nút Hello World vào ứng dụng của bạn. Trước khi chúng ta thêm 1 nút – button, chúng ta cần tạo ra 1 View và 1 controller phản hồi cho nó. Bạn có thể tưởng tưởng 1 View là 1 ô chứ các item về giao diện UI như là button, textbox, Quay trở lại với phần điều hướng project – Project Navigator. Click chuột phải vào thư mục HelloWorld và chọn “New File”.

Trong mục Cocoa Touch, bạn chọn Objective-C class và nhấn Next.

Điền tên class là HelloWorldViewController và subclass  chọn là UIViewController. Hãy chắc chắn là đánh dấu tích vào lựa chọn “With XIB for user interface” . Với lựa chọn này, Xcode sẽ tự động tạo ra 1 file trình tạo giao diện (interface builder) cho view controller.

Sau đó sẽ xuất hiện 1 hộp thoại, bạn chi cẩ nhấn vào nút Create để tạo class và file XIB. Khi hoàn thành, Xcode sẽ tạo ra 3 file bao gồm HelloWorldViewController.h ,HelloWorldViewController.m và HelloWorldViewController.xib. Nếu bạn chọn vào file HelloWorldViewController.xib  bạn sẽ thấy 1 view rỗng như hình sau:

Ok, bây giờ ta thêm button Hello World vào trong view. Ở phần dưới cùng của phần tiện ích (utillity area) phía bên tay phải, nó hiển thị ra thư viện Object. Từ đây, bạn có thể chọn các thành phần của giao diện người dùng như là button, kéo thảo nó vào trong View. Với ứng dụng Hello World, hãy chọn 1 button và kéo thả vào trong view. Hãy căn chỉnh sao cho button nằm ở giữa view.

Ok. sau đó đổi tên của button, để thay đổi nhãn (label) của button đó, click đúp vào button đó và điền tên là “Hello World”.

Nếu bạn thử chạy ứng dụng của bạn, bạn vẫn nhận được là màn hình nâu và không có gì trong đó. Lý do là do chúng ta chưa chỉ cho ứng dụng load  view mới. Chúng ta sẽ thêm vài dòng code nữa để load vào HelloWorldViewController.xib. Chọn file AppDelegate.m trong phần Project Navigator. Thêm dòng lệnh sau ở đầu file:

#import "HelloWorldViewController.h"

Trong phương thức (method) didFinishLaunchingWithOptions,  thêm các dòng code sau câu dòng “self.window.backgroundColor = [UIColor whiteColor]“.

HelloWorldViewController *viewController = [[HelloWorldViewController alloc] initWithNibName:@"HelloWorldViewController" bundle:nil];
self.window.rootViewController = viewController;

Code của bạn sẽ có dạng như sau:

Những việc bạn vừa làm là load HelloWorldViewController.xib  và gán cho nó là view controller gốc (root). Bây giờ thử chạy lại ứng dụng, nó sẽ ra như sau:

Tuy nhiên, nếu bạn nhấn hay còn gọi là tap vào button, nó sẽ chẳng hiển thị ra gì. Chúng ta sẽ thêm một số dòng code để hiển thị lời chào “Hello, World”.

6. Code cho Hello World button

Trong phần Project Navigator, mở file “HelloWorldViewController.h”. Trình biên soạn sẽ xuất hiện với các dòng code của file này. Thêm dòng code sau trước dòng “@end”.

-(IBAction)showMessage;

Đoạn code hoàn chỉnh sau khi thêm dòng trên là:

#import <UIKit/UIKit.h>

@interface HelloWorldViewController : UIViewController

-(IBAction)showMessage;

@end

Sau đó mở file “HelloWorldViewController.m” và thêm dòng code sau trước dòng “@end”

- (IBAction)showMessage
{
UIAlertView *helloWorldAlert = [[UIAlertView alloc]
initWithTitle:@"My First App" message:@"Hello, World!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];

// Display the Hello World Message
[helloWorldAlert show];
}

Sau khi thêm code, code hoàn chỉnh của bạn sẽ như sau:

Hãy tạm quên đi ý nghĩa của những dòng code Objective-C. Mình sẽ giải thích sau. Tiếp theo, hãy nghĩ rằng “showMessage” là 1 hành động, và hành động đó chỉ ra cho iOS hiển thị thông báo “Hello, World” lên màn hình.

7. Kết nối button Hello World với 1 hành động (action)

Và đây là câu hỏi:

Làm sao để button (nút) Hello World lj có thể biết được rằng hành động nào sẽ được gọi khi tap vào button đó?

Tiếp theo, bạn cần phải thiết lập 1 kết nối giữa button Hello World và hành động(action) showMessage mà bạn vừa mới thêm vào. Mở file “HelloWorldViewController.xib” , nhấn giữ phím Control (đối với máy Mac), còn đối với máy ảo chạy trên Windows thì giữ phím Ctrl và click vào button Hello World,  sau đs kéo vào File’s Owner. Bạn có thể xem hình sau:

Thả tay ra và sẽ hiển thị ra 1 pop-up, chọn showMessage để thiết lập kết nối giữa button Hello World và action showMessage:

8. Chạy thử chương trình

Ok, như vậy là đã hoàn thành. Hãy nhấn nút Run. Nếu mọi thứ đúng thì chắc chắn ứng dụng của bạn sẽ chạy tốt trên simulator:

Chúc mừng bạn, như vậy là bạn đã xây dựng thành công 1 ứng dụng iOS đầu tay rằng. Mình tin rằng bạn đã hiểu rõ hơn về Xcode cũng như làm thề nào để phát triển 1 ứng dụng iOS. Blog sẽ tiếp tục các bài hướng dẫn tiếp theo, hãy theo dõi nhé. Source code bài này bạn có thể download tại đây: Download

Note: Bản gốc được viết từ website appcoda.com và được dịch bởi VietDevelopers.com. Mọi trích dẫn, hay copy vui lòng ghi rõ nguồn và được sự đồng ý của tác giả. Xin cảm ơn và chúc các bạn học tốt!

Khả Chương