2010-08-03 2 views
0

모든 연결 관련 기능을 자체 (싱글 톤) 클래스 또는 응용 프로그램 대리인에 넣을 수 있습니까?Objective-C NSURLConnection

지금은 코드 반복이 많습니다 ...

예 : 이 방법은 적어도 5 개의 파일에 있습니다 :

- (void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error; 

방금이 방법으로 클래스를 가져 오시겠습니까? 나는 그것을 확장해야합니까?

답변

0

주로 각 URL 연결이 다르기 때문에 다르게 처리해야 할 수도 있기 때문에 NSURLConnection 처리기에 대한 단일 접근 방식을 사용하지 않는 것이 좋습니다.

간단한 요청이있는 경우 코드가 반복되는 것처럼 보일 수 있지만 더 복잡한 요청을 시작하면 요청에서 되돌아 오는 여러 응답을 구문 분석하면 곧 보게됩니다. 일반 접근 방식으로는 더 구체적인 구현을 작성하지 않아도된다는 이점이 있습니다.

0

정답은 네트워크 상호 작용이 얼마나 복잡한 지에 달려 있습니다. 그것이 복잡하고 한 클래스에서이 모든 것을하려고하면 클래스의 모든 메소드에서 끝이없는 경우가 발생합니다. 한 클래스에서 할 수있을 정도로 간단하면 싱글 톤으로 만들 필요가 없다고 생각합니다. NSURLConnection 델리게이트 함수가 작동하는 방식으로 인해 연결 객체를 ivar로 가질 필요조차 없다.

하나의 전략은 DataSource 또는 이와 유사한 클래스 인 상위 클래스에서 정보를 얻는 데 사용할 인터페이스를 정의하는 것입니다. 데이터를 보내거나 사용하는 모든 클래스는 해당 인터페이스를 사용하도록 작성됩니다. 개발하는 동안 FileSource라는 하위 클래스를 사용하고 로컬에있는 더미 데이터를 가져올 수 있습니다. 나중에 실제로가는 NetSource 서브 클래스로 전환하고 그물을 사용하여 가져옵니다. http : scheme의 파일 : URL 스킴을 변경하는 것과 같은 간단한 작업을 사용하여 스위치를 수행 할 수 있으며 DataSource 클래스는 URL을 해석하고 인스턴스화 할 클래스 종류를 알려주는 클래스 메소드를 가질 수 있으므로 전환 할 수 있습니다. .plist 설정을 사용합니다.

0

나는 다운로드 요청을 처리하고 데이터를 처리하는 과정에서 자동으로 리 릴리스되고있는 클래스가 있습니다. NSURLConnection을 시작할 때마다 URL로 초기화하는 것은 싱글 톤이 아니라 오히려 객체입니다. 이 클래스에는 수신 된 데이터를 처리하는 대리자가 있습니다.

희망이

을하는 데 도움이