Tôi đang gặp sự cố khi hiểu khái niệm về các cửa hàng cách iPhone xử lý sự kiện. Cứu giúp! Các đại biểu cũng nhầm lẫn tôi. Ai đó có thể giải thích, xin vui lòng?Thuật ngữ C mục tiêu: đại lý & đại biểu
Trả lời
Cửa hàng (trong Trình tạo giao diện) là các biến thành viên trong một lớp nơi các đối tượng trong trình thiết kế được chỉ định khi chúng được tải khi chạy. Các IBOutlet
vĩ mô (mà là một trống rỗng #define
) tín hiệu Interface Builder để nhận ra nó như là một lối thoát để hiển thị trong thiết kế. Ví dụ, nếu tôi kéo ra một nút, sau đó kết nối nó với ổ cắm aButton
(được định nghĩa trong tệp .h giao diện của tôi), việc tải tệp NIB vào thời gian chạy sẽ chỉ định aButton
con trỏ đến số UIButton
được khởi tạo bởi NIB.
@interface MyViewController : UIViewController {
UIButton *aButton;
}
@property(nonatomic, retain) IBOutlet UIButton *aButton;
@end
Sau đó, trong việc thực hiện:
@implementation MyViewController
@synthesize aButton; // Generate -aButton and -setAButton: messages
-(void)viewDidAppear {
[aButton setText:@"Do Not Push. No, seriously!"];
}
@end
này giúp loại bỏ sự cần thiết phải viết mã để nhanh chóng và gán các đối tượng GUI khi chạy.
Đối với đại biểu, họ là sự kiện tiếp nhận đối tượng được sử dụng bởi một đối tượng (thường là một lớp API tổng quát như một cái nhìn bảng). Chẳng có gì đặc biệt về họ cả. Đó là một mô hình thiết kế. Lớp đại biểu có thể xác định một số thông báo dự kiến như:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
... và đối tượng API gọi thông báo này trên đại biểu khi họ muốn thông báo cho sự kiện. Ví dụ:
-(void)update:(double)time {
if (completed) {
[delegate process:self didComplete:totalTimeTaken];
}
}
Và các đại biểu xác định thông điệp:
-(void)process:(Process *)process didComplete:(double)totalTimeTaken {
NSString *log = [NSString stringWithFormat:@"Process completed in %2.2f seconds.", totalTimeTaken];
NSLog(log);
}
sử dụng như vậy có thể là:
Process *proc = [Process new];
[proc setDelegate:taskLogger];
[proc performTask:someTask];
// Output:
// "Process completed in 21.23 seconds."
Vì vậy, các đại biểu thực sự được tôn vinh các phiên bản của những ngôn ngữ khác như Javascript hoặc Python hiểu là gọi lại, đúng không? – SexyBeast
Một đại biểu chỉ là một đối tượng mà đối tượng khác có thể chuyển tiếp các tin nhắn đến. Nói cách khác, nó giống như khi mẹ bạn nói với bạn để làm sạch phòng của bạn và bạn pawned nó ra trên em trai của bạn. Bro nhỏ của bạn biết cách làm công việc (vì bạn quá lười biếng để học hỏi) và vì vậy anh ấy làm điều đó cho bạn.
Thật là một sự so sánh giáo lý tuyệt vời! –
Tại sao mẹ không hỏi em trai trực tiếp? – super9
- 1. Nhiều đại biểu trong mục tiêu C
- 2. Biểu tượng @ đại diện cho mục tiêu-c là gì?
- 3. đại biểu tiêu chuẩn trong C#
- 4. Đại biểu Constructor C++
- 5. "Mục tiêu hiện đại-C" thực sự là phiên bản mới, tức là Mục tiêu-C 2.1?
- 6. Đại biểu trong C++ 11
- 7. Giao diện C, đại biểu và giao thức C mục tiêu
- 8. Mục tiêu kiểm tra kiểu Objective-C mới hiện đại
- 9. Làm thế nào để thực hiện mẫu đại biểu (như trong mục tiêu-c) trong java
- 10. Ít bối rối về các đại biểu trong mục tiêu-C
- 11. Làm thế nào để mở rộng các giao thức/đại biểu trong Mục tiêu-C
- 12. Đại biểu so với từ khóa đại biểu
- 13. C# [đại biểu] mới không cần thiết?
- 14. C# tham số đại biểu kích thước
- 15. Cast đại biểu đến Func trong C#
- 16. Các đại biểu trong SWIG - C#
- 17. các đại biểu vô danh trong C#
- 18. cách mở rộng giao thức cho đại biểu trong mục tiêu C, sau đó phân lớp đối tượng để yêu cầu một đại biểu phù hợp
- 19. C#: Hành động đại biểu so với đại biểu rõ ràng
- 20. C#: cách tạo loại đại biểu từ các loại đại biểu?
- 21. C# Func <> đại biểu trong thư viện
- 22. Sử dụng một đại biểu để quản lý hai UIActionSheets
- 23. Đại biểu là gì?
- 24. Blocks vs đại biểu
- 25. Gỡ lỗi Đại lý Java
- 26. Điểm đại biểu là gì?
- 27. Proxy/đại biểu tại Scala
- 28. MethodInvoke đại biểu hoặc biểu thức lambda
- 29. CLLocationQuản lý không gọi đại biểu trong NSObject
- 30. Làm thế nào để xử lý nhiều đại biểu
không cố gắng trở thành kẻ giật giật nhưng bạn đã đọc tài liệu giới thiệu tại developer.apple.com chưa? Nó chỉ là câu hỏi sẽ có một bài luận để trả lời. Có thể hỏi một câu hỏi chi tiết hơn về những gì đang treo bạn lên. –
Tài liệu mà Apple cung cấp trong Hướng dẫn cơ bản về ca cao trên các cửa hàng: http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/CommunicateWithObjects.html#//apple_ref/doc/uid/ TP40002974-CH7-SW3 và các đại biểu: http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/CommunicateWithObjects.html#//apple_ref/doc/uid/TP40002974-CH7-SW18 dường như khá kỹ lưỡng với tôi. –
@Brad - Tôi không phải là người tài liệu. – Moshe