내 응용 프로그램에 Three20TTMessageController
을 사용하고 있습니다. 다른 것들 (예 : TTMessageControllerDelegate
메서드 및 ABPeoplePickerNavigationControllerDelegate
메서드 포함) 잔뜩 추가하여 그것을 사용하는 방법을 알아 냈습니다. 그것을 해결하기위한 약간의 노력 끝에 나에게 큰 도움이됩니다.두 컨트롤러에서 modalViewController를 동일하게 사용하려면 어떻게해야합니까?
내가 지금 당면하는 문제는 디자인 문제입니다. 같은 위임 방법을 포함하여 두 곳에서 똑같이 사용하고 싶습니다.
ComposerProxy *proxy = [[ComposerProxy alloc] initWithController:this];
[proxy go];
을 : 내 현재의 접근 방식은 내가 NSObject
에서 상속 하나의 클래스에 모든 코드를 넣어 ComposerProxy
라고, 나는 그냥과 같이, 프록시를 사용하는 사용하는 두 개의 컨트롤러에 봉착 한 것입니다 go
방법은 그것을 구성하는 UINavigationController
에 추가의 TTMessageController
구축하고이를 제공 :
[self.controller presentModalViewController: navController animated: YES];
내 모든 코드가 잘 ComposerProxy
에 캡슐화 가지고이, 잘 작동하고 나는 단지 위의 두 줄을 어디서든 필요 그것을 사용하고 싶다.
그래도 오류가 발생하지 않고 dealloc
proxy
변수를 사용할 수 없다는 것이 단점입니다. 나는 autorelease
그것 일 수 없다 : 동일한 문제.
그래서 내 프록시 접근 방식이 좋지 않은지 궁금 하네. 일반적으로 클래스를 사용하는 클래스에서 많은 중복 코드가 필요없이 이러한 동작을 캡슐화하는 방법은 무엇입니까? ComposerProxy
에 대리자 클래스를 추가하고 컨트롤러가 가상의 composerDidFinish
메서드 또는 일부에서 모달 뷰 컨트롤러를 닫지 않도록 할 필요가 있습니까?
많은 TIA!
아, 카테고리를 추가 할 생각이 없습니다. 그것은 아주 좋은 생각입니다. (저는 컨트롤러가 아닌 다른 것들을 위해했습니다.) 나는 카테고리가 그것을 구현하는 대표자를 추가한다고 생각한다. 호출 클래스는 인스턴스 속성에 프록시 객체를 유지하지 않으므로 메모리 문제가 발생합니다. 따라서 인스턴스가 삭제되면 참조가 없으므로 제대로 작동하지 않습니다. 문제를 해결할 수있는 방법이 있다면 숙고 해 왔지만 어쨌든 카테고리를 사용하는 것이 더 좋은 방법 일 것입니다. 감사! – theory