Tuesday, July 2, 2013

iOS: Ngôn ngữ lập trình Objective C - P1



1.    Giới thiệu

Ngôn ngữ lập trình Objective-C là một ngôn ngữ lập trình hướng đối tượng được xây dựng chủ yếu dựa trên nền tảng ANSI C, và ngoài ra nó còn được mở rộng từ Smalltalk, một trong những ngôn ngữ lập trình hướng đối tượng đầu tiên. Objective-C được thiết kế với mục đích đưa vào C các tính năng hướng đối tượng một các đơn giản và dễ hiểu nhất.

Objective-C là ngôn ngữ chính được Apple chọn để viết các ứng dụng cho hệ điều hành MAC, iPod và iPhone.

Như vậy, để nắm được Objective-C bạn phải có kinh nghiệm về ngôn ngữ C. Nếu bạn có kiến thức tốt về C thì bạn có thể nắm nhanh Objective-C và có thể bắt đầu phát triển các ứng dụng cho iPhone và hệ điều hành MAC. Nếu không, bạn nên dành thời gian tìm hiểu thêm về ngôn ngữ C trước khi tìm hiểu Objective-C.


2.    Cơ bản về Objective-C

2.1.                     Từ khóa

2.1.1.     Khai báo class, category và protocol

·        @interface: khai báo class hoặc interface.
·        @implementation: định nghĩa class hoặc category.
·        @protocol: khai báo protocol
·        @end: kết thúc trong việc khai báo, định nghĩa category hoặc protocol.

2.1.2.     Phạm vi truy xuất các biến thể hiện

·        @private: giới hạn phạm vi trong lớp mà biến thể hiện được khai báo.
·        @protected: giới hạn phạm vi trong lớp và lớp con kế thừa mà biến thể hiện được khai báo.
·        @public: không giới hạn phạm vi truy xuất.
·        Mặc định là @protected

2.1.3.     Xử lý ngoại lệ

·         @try
·        @throw
·        @catch
·        @finally

2.1.4.     Các mục đích cụ thể khác

·        @class: khai báo trước một tên lớp đã được định nghĩa ở một nơi khác.
·        @selector(method_name): trả về một selector đã được biên dịch mà được định nghĩa thông qua method_name.
·        @protocol(protocol_name): trả về một protocol protocol_name (một thể hiện của một lớp Protocol). @protocol là hợp lệ (không có protocol_name) trong trường hợp khai báo trước
·        @synchronized: định nghĩa một block mã nguồn trong nó phải được thực hiện đồng bộ

2.1.5.     Một số từ khóa khác

·        #import: dùng để include một file, tương tự include trong C, C++.
·        Một số từ khóa khác
alloc retain release autorelease in out inout  bycopy byref oneway super self

2.2.                     Câu lệnh trong Objective-C

Các câu lệnh điều khiển if, switch và các câu lệnh lặp for, while… tương tự như C/C++ hoặc Java

2.3.                Đối tượng

Một chương trình hướng đối tượng được xây dựng từ các đối tượng. Mỗi đối tượng bao gồm dữ liệu và các phương thức để sử dụng hoặc tương tác trên các dữ liệu đó.
Objective-C cho phép định danh một đối tượng mà không cần phải chỉ ra một lớp cụ thể của đối tượng đó, điều này cho phép định kiểu động.
Trong chương trình thì ta phải luôn đảm bảo rằng ta phải luôn xử lý các đối tượng không còn cần thiết nữa.

2.3.1.     Id

Trong Objective-C, định danh đối tượng là một kiểu dữ liệu khác biệt: id. Kiểu này được định nghĩa như là một con trỏ trỏ đến một đối tượng, trong thực tế, một con trỏ trỏ đến các biến thể hiện của một đối tượng, với dữ liệu duy nhất. Giống như hàm hoặc mảng trong C, một đối tượng được định danh bởi một địa chỉ. Tất cả các đối tượng, bất kể là biến thể hiện hay phương thức, đều có kiểu là id.

            id  anObject; 

2.3.2.     Định kiểu động

Kiểu id là một kiểu hoàn toàn không hạn chế. Bản thân nó không mang thông tin về một đối tượng, ngoài trừ nó là một đối tượng.
Nhưng các đối tượng lại không giống nhau. Tại một vài thời điểm, chương trình cần biết rõ các thông tin đặc tả của một đối tượng, các biến thể hiện mà nó chứa, các hàm mà nó có thể thực hiện, kiểu id khi được thiết kế ra không hỗ trợ được điều này.
Để hỗ trợ điều này, mỗi đối tượng được thiết kế mang trong nó một biến thể hiện isavới mục đích định danh lớp của đối tượng, cho biết đối tượng đó thuộc loại nào. Nhưng vậy tại mỗi thời điểm runtime, đối tượng là các kiểu động. Bất cứ lúc nào cần, hệ thống runtime có thể biết chính xác lớp mà đối tượng đó thuộc về, bằng cách hỏi ngay đối tượng đó.
Con trở isacho phép các đối tượng tìm các thông tin về bản thân chúng. Trình biên dịch ghi nhận các thông tin về định nghĩa lớp vào các cấu trúc dữ liệu để hệ thống runtime sử dụng. Các hàm của hệ thống runtime sử dụng isa để tìm ra các thông tin này tại thời điểm runtime.

2.3.3.     Bộ nhớ

Trong lập trình Objective-C, một điều quan trọng là phải giải phóng các đối tượng không còn sử dụng, nếu không bộ nhớ sẽ tràn. Và một điều quan trọng không kém đó là không được giải phóng đối tượng khi nó đang được sử dụng.

No comments:

Post a Comment