Câu trả lời:
Tôi thường tránh cách tiếp cận thiết kế ngụ ý khi Andrew sử dụng thuật ngữ "trái tim của ứng dụng của bạn". Điều tôi muốn nói là tôi nghĩ bạn nên tránh bỏ quá nhiều thứ vào một vị trí trung tâm - thiết kế chương trình tốt thường liên quan đến việc tách chức năng theo "khu vực quan tâm".
Đối tượng ủy nhiệm là một đối tượng được thông báo khi đối tượng được kết nối đến các sự kiện hoặc trạng thái nhất định. Trong trường hợp này, Đại biểu ứng dụng là một đối tượng nhận thông báo khi đối tượng UIApplication đạt đến một số trạng thái nhất định. Trong nhiều khía cạnh, nó là một mẫu Observer một-một chuyên biệt.
Điều này có nghĩa là "khu vực quan tâm" đối với AppDelegate đang xử lý các trạng thái UIApplication đặc biệt. Điều quan trọng nhất trong số này là:
Bạn nên tránh đưa các chức năng khác vào AppDelegate vì chúng không thực sự thuộc về nơi đó. Các chức năng khác bao gồm:
Nhiều người gộp những thứ này vào AppDelegate của họ vì họ lười biếng hoặc họ nghĩ AppDelegate kiểm soát toàn bộ chương trình. Bạn nên tránh tập trung vào AppDelegate của mình vì nó làm mờ các khu vực quan tâm trong ứng dụng và không mở rộng quy mô.
Đại biểu ứng dụng của bạn là trái tim của ứng dụng của bạn. Đó thực sự là "Trình điều khiển chương trình" của bạn.
Đại biểu ứng dụng là lớp nhận các thông báo ở cấp ứng dụng, bao gồm thông báo applicationDidFinishLaunching được sử dụng phổ biến nhất để bắt đầu tạo các chế độ xem khác.
Mặc dù không hoàn toàn giống nhau nhưng bạn có thể nghĩ nó là thói quen "chính ()" của chương trình Ca cao của bạn.
@Shivam, cảm ơn.
Từ những gì tôi hiểu appDelegate
, gần với những gì một Application
trong Android. Các viewDidLoad
, viewDidDisappear
có thể so sánh với những gì Vòng đời của Android. Mọi ứng dụng đều có vòng đời, từ khởi chạy đến gián đoạn từ các cuộc gọi đến, đến các thông báo hiển thị. Nếu bạn cần mã của mình để làm một cái gì đó đặc biệt khi những system
sự kiện này xảy ra thì bạn cần phải viết mã các phương thức.
Trong Android chúng tôi sử dụng onPause
, onDestroy
, onCreate
kinda gọi lại phương pháp để xử lý các sự kiện hệ thống như vậy.
onPause
, onCreate
và onDestroy
phương pháp của Android cũng tương tự như nhiều vào viewDidDisappear
, viewDidLoad
phương pháp vòng đời một iOS Xem lý lịch thành Controller. Nếu bạn phải so sánh, tôi sẽ nói rằng Application
lớp Android sẽ gần với AppDelegate
iOS hơn.
Hy vọng điều này sẽ giúp thêm một chút ...
Các lập trình viên mới sử dụng ngôn ngữ này luôn có cùng một câu hỏi - chương trình có bắt đầu từ một phương thức chính không? Vâng, bạn đúng trong trường hợp này; Các ứng dụng iOS cũng bắt đầu từ một phương thức chính.
Lớp chính của bạn gọi hàm dưới đây:
UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
UIApplicationMain khởi động cơ sở hạ tầng ứng dụng và vòng lặp ứng dụng Cacao Touch tạo ra một UIApplication
đối tượng. Ứng dụng của chúng tôi cần nội dung nên object-c sử dụng một đại biểu để xử lý việc này. Đó là lý do tại sao chúng tôi gọi nó là AppDelegate (đóng vai trò là đại biểu UIApplication
). Chúng tôi thực hiện một số phương pháp tùy chọn của đại biểu đó và nó hành xử tương ứng.