iPhone에서 이벤트를 처리하는 방법에 대한 개념을 이해하는 데 문제가 있습니다. 도움! 대의원들이 나를 혼란스럽게합니다. 설명 할 사람이 있겠 니?객관적인 C 용어 : 콘센트 및 대리자
답변
아웃렛 (Interface Builder에서)은 런타임에 디자이너가로드 될 때 객체가 할당되는 클래스의 멤버 변수입니다. IBOutlet
매크로 (비어있는 #define
)는 인터페이스 작성기가 이것을 디자이너에 표시 할 콘센트로 인식하도록 신호를 보냅니다.
나는 버튼을 드래그하면 예를 들어, 런타임에 NIB 파일의 로딩이 인스턴스화하는 UIButton
에 aButton
포인터를 할당합니다 (.H 파일 내 인터페이스에 정의)이 aButton
콘센트에 연결 부리. 그리고 구현에
@interface MyViewController : UIViewController {
UIButton *aButton;
}
@property(nonatomic, retain) IBOutlet UIButton *aButton;
@end
는 :
@implementation MyViewController
@synthesize aButton; // Generate -aButton and -setAButton: messages
-(void)viewDidAppear {
[aButton setText:@"Do Not Push. No, seriously!"];
}
@end
이 인스턴스화 런타임에 GUI 오브젝트를 할당하는 코드를 작성할 필요가 없습니다. 대리인로서는
들은 (예 테이블 뷰로서 일반적으로 일반화 된 API 클래스) 다른 목적으로 사용되는 경우 수신 개체이다. 본질적으로 특별한 것은 없습니다. 그것은 더 많은 디자인 패턴입니다. Delegate 클래스는 다음과 같은 예상되는 여러 메시지를 정의 할 수 있습니다 :
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
... 그리고는 이벤트를 통지하고자 할 때 API 객체는 대리자에이 메시지를 호출합니다. 예를 들어 :
-(void)update:(double)time {
if (completed) {
[delegate process:self didComplete:totalTimeTaken];
}
}
그리고 대표는 메시지를 정의
-(void)process:(Process *)process didComplete:(double)totalTimeTaken {
NSString *log = [NSString stringWithFormat:@"Process completed in %2.2f seconds.", totalTimeTaken];
NSLog(log);
}
사용은 할 수 있습니다
Process *proc = [Process new];
[proc setDelegate:taskLogger];
[proc performTask:someTask];
// Output:
// "Process completed in 21.23 seconds."
그래서 델리게이트는 실제로 Javascript 나 Python과 같은 다른 언어가 콜백으로 해석하는 영광스러운 버전입니까? – SexyBeast
대리자가 다른 객체가 메시지를 전달 할 수있는 개체입니다. 다른 말로하면, 엄마가 방을 청소하라고 말했고, 동생이 그 방을 청소했을 때와 같습니다. 당신의 어린 동생은 (당신이 배우기에는 너무 게을 렸기 때문에) 일을하는 법을 알고 있습니다. 그래서 그는 당신을 위해서 그것을합니다.
훌륭한, 교훈적인 비교! –
왜 엄마가 동생에게 직접 물어 보지 않았습니까? – super9
- 1. C# 상수 및 대리자
- 2. 대리자 및 상속 C#
- 3. 콘센트 및 인스턴스 메서드
- 4. 콘센트 및 단추가 무시되었습니다.
- 5. 대리자 및 콜백
- 6. 목표 C : 여러 대리자
- 7. 객관적인 C 파일 조직
- 8. 객관적인 미래의 C?
- 9. WebSocket을하고 객관적인-C
- 10. C# 대리자 및 이벤트 디자인 도움말
- 11. C# 내부 대리자 및 공개 이벤트
- 12. 객관적인 C 메모리 누수
- 13. 목표 C 용어 도움말
- 14. 객관적인 c 플로트 및 부울 배열 가능?
- 15. 객관적인 C - 메모리 관리 및 autorelease ???
- 16. 객관적인 C 메시지를 무시합니다.
- 17. 키 및 용어
- 18. 객관적인 c 메모리 누수
- 19. Visual C# 대리자 배열
- 20. C# 대리자 최적화 컴파일
- 21. C#의 익명 대리자
- 22. C# - 익명 대리자
- 23. 객관적인 C - 릴리스 문제
- 24. 객관적인 C 기본 질문
- 25. 객관적인 C 메모리 누수
- 26. 객관적인 c 연산자 의미
- 27. 객관적인 c isKindOfClass missunderstanding?
- 28. 객관적인 c 루프
- 29. 객관적인 c 메모리 관리
- 30. 객관적인 C 이미지 처리
저크가 되려고하지 않고 developer.apple.com에서 소개 문서를 읽으셨습니까? 그 질문은 대답하기위한 에세이를 택할 것입니다. 어쩌면 당신을 매달아 놓고 있는지에 대해보다 자세한 질문을 할 수 있습니다. –
Apple이 Cocoa Fundamentals Guide에서 제공하는 설명서 : http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/CommunicateWithObjects.html#//apple_ref/doc/uid/ TP40002974-CH7-SW3 및 대표자 : http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/CommunicateWithObjects.html#//apple_ref/doc/uid/TP40002974-CH7-SW18이 표시됩니다. 꽤 철저하게 나에게. –
@ 브래드 - 나는 문서 작성자가 아닙니다. – Moshe