대리자보기 컨트롤러를 만들고이를 사용자에게 제시하여 작업을 수행하고 있지만 원래보기 컨트롤러를 기반으로 한 대리자보기 컨트롤러에서 NSString을 변경하고 싶습니다. 예를 들어 위임 뷰 컨트롤러가 viewControllerA의 대리자이면 Foo를 표시하지만 viewControllerB 대리자가 Blah를 표시하는 경우를 예로들 수 있습니다. 비록 원래의 View Controller가 무엇인지 나타내는 정보를 전달하는 방법을 알지 못한다. NSLog (@ "나는 % @", [self delegate] 출신이다.)를한다면, 원래의 뷰 컨트롤러가 무엇인지뿐만 아니라 메모리 주소도 알려줄 것입니다. 그러나 그 값을 검사하기 위해 NSString 개체로 변환하는 것 같습니다. 그 일을하는 방법이나 더 좋은 방법이 있다면 너무 효과적입니다 ...개체를 대리인에게 전달하는 방법은 무엇입니까?
- (IBAction)editDate {
DatePickerViewController *datePickerView = [[DatePickerViewController alloc] init];
datePickerView.delegate = self;
datePickerView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:datePickerView animated:YES];
[datePickerView release];
}
는 대리인이 개체의 어떤 종류의 알 필요와 함께, DatePickerViewController에있는 NSString * 속성을 추가하고 임의의 텍스트를 설정할 수 있습니다 특히 그 기준에 따라 행동을 바꾸는 것은 구조적으로 잘못된 것을하고 있다는 신호입니다. 이 구현을 설명하는 데 이름이 바뀐 단일 대리자 메서드로 바꾸어야합니다. 이를 다형성 (polymorphism)이라고하며이를 위임 프로토콜로 통합하면 위임 클래스가 더욱 강력 해집니다. –