iPhone: Tìm hiểu kiến trúc của một ứng dụng iPhone

Ở bài viết này chúng ta sẽ cùng nhau tìm hiểu tổng quan kiến trúc của một ứng dụng iPhone như thế nào.

Khi user tap vào icon của ứng dụng, hệ thống sẽ launch ứng dụng dụng bằng việc gọi phương thức main() của nó, đây chính là entry point của ứng dụng

int main(int argc, char *argv[])

{

    @autoreleasepool {

        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

    }

}

Mỗi ứng dụng iPhone đều có một thể hiện duy nhất của lớp UIApplication, lớp này là cung cấp một điểm tập trung để kiểm soát và điều phối các ứng dụng chạy trên iPhone. Trong phương thức main() sẽ tạo ra một autorelease pool (được sử dụng để quản lý bộ nhớ) và thực hiện lời gọi phương thức UIApplicationMain của lớp UIApplication. Phương thức UIApplicationMain này sẽ tạo ra một thể hiện Singleton của lớp UIApplication, trong ứng dụng, ta có thể truy xuất thể hiện này qua phương thức shareApplication.

Trách nhiệm quản lý các hành vi mức cao của ứng dụng được lớp UIApplication giao lại cho đối tượng UIApplicationDelegate, đây thực chất là một protocol cung cấp các phương thức xử lý các sự kiện cơ bản của ứng dụng: khi ứng dụng được launch, ứng dụng chuyển xuống background, ứng dụng thoát, bộ nhớ không đủ… đối tượng UIApplicationDelegate này ta sẽ tạo ra và cung cấp cho đối tượng Singleton UIApplication (ta sẽ tìm hiểu việc cung cấp đối tượng delegate ở đoạn sau). Và khi ứng dụng được launch, phương thức -(BOOL)application: didFinishLaunchingWithOptions: sẽ được gọi.

– (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

    // Override point for customization after application launch.

    self.window.backgroundColor = [UIColor whiteColor];

    [self.window makeKeyAndVisible];

    return YES;

}

Trong phương thức này ta sẽ hiển thị đối tượng UIWindow của ứng dụng, đối tượng này tạm xem như là đối tượng hiển thị chính cho ứng dụng (ta sẽ tìm hiểu sau), các đối tượng hiển thị con khác UIView sẽ lần lượt được thêm vào trên đối tượng UIWindow chính này

Window và View

iPhone OS sử dụng window và view để hiển thị các nội dung đồ họa trên màn hình. Mặc dù có nhiều điểm tương tự giữa window và view nhưng vai trò của chúng có khác nhau.

Vai trò của UIWindow

–       Một ứng dụng iPhone thường chỉ có duy nhất một window, được đại diện bởi một thể hiện của lớp UIWindow. Ứng dụng của bạn tạo window này tại thời điểm launch ứng dụng, add một hoặc nhiều view vào nó và hiển thị. Sau đó, bạn hiếm khi cần lại đối tượng window này.

–       Trong iOS, một đối tượng window không có các đối tượng “trang sức” mang tính trực quan như nút đóng, thanh tiêu đề và nó không thể đóng trực tiếp bởi người dùng.

Vai trò của UIView

–       Một view, thể hiện của lớp UIView, định nghĩa một vùng trên màn hình, trong ứng dụng iPhone, view đóng vai trò hiển thị giao diện và đáp ứng các tương tác với giao diện đó. Mỗi đối tượng view có trách nhiệm render nội dung và đáp ứng các sự kiện touch trong vùng của nó.

–       Ngoài trách nhiệm trên, view còn quản lý một hoặc nhiều view con của nó.

Các lớp UIKit View

–       Lớp UIView chỉ định nghĩa các thuộc tính của một view nhưng không có các thể hiện mang tính trực quan. Thay vì đó, UIKit sử dụng các lớp con để định nghĩa cho các control chuẩn như text field, button, toolbar…

Như vây, khi xây dựng một ứng dụng, chúng ta sẽ thao tác trực tiếp với các đối tượng UIKitView này.

Qua bài viết này, hy vọng chúng ta sẽ phần nào nắm được kiến trúc tổng quan của một ứng dụng iOS. Chúng ta sẽ tiếp tục tìm hiểu qua bài viết sắp tới với ứng dụng HelloWorld.

  1. #1 by Hung Truong on Tháng Mười 7, 2013 - 01:29

    bai viet hay qua!!!

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: