2013-04-01 2 views
0

다른 유형의 "스트림"(Twitter를 생각하는)이있는 앱을 만들고 있습니다. 그것에서 나는 이것의 대부분을 관리하는 꽤 큰 뷰 컨트롤러를 가지고있다. 스트림은 두 가지 주체 인 User와 Post로 구성되어 있습니다. 보기 컨트롤러에서 나는 어떤 종류의 스트림인지 결정하기 위해 NSSTring 속성을 가지고 있습니다. 이 많은 리드 :iOS 리팩터링/디자인 : 여러 모델/스트림을 관리하는보기 컨트롤러 하나?

if ([self.postType isEqualToString:@"stream"]) { 

    // Do stuff 

} else if [self.postType ... 
[...] 
[...] 

이 최상의 솔루션 디자인 현명한 경우 나도 몰라, 그것은 많은 연결로 이어집니다. 좋은 점은 중복을 피하는 것입니다. 그러나 똑같은 일을하는 더 좋고/더 좋은 방법이 있습니까? 이 같은

답변

1
typedef enum{ 
    stream, 
    --, 
    -- 
}postType; 

를보다 효율적으로 사용 ..

switch (_postType) 
    { 
     case stream: 
      //do what you want 
      break; 
     case --: 
      break; 
     case --: 
      break; 
    } 
+0

이와 함께하기로 결정했습니다. 훨씬 좋았어. 다른 해결책은 거대한 재 작성이 될 것입니다. – Anders

2

당신이 정말로 상속을 피하려면, 당신은 각 스트림에 대해 서로 다른 방식을 사용할 수 있습니다. 각 스트림 유형에 대한 선택기를 매핑하십시오 (예 : 선택기 색인의 열거 형 및 각 체계 [C 스타일 배열]에 대한 선택자 배열, see here)을 정의하십시오. 각 구성표는 다른 선택기 배열에 액세스합니다.

+0

감사합니다. 나는 상속이 좋다. 그게 좋은 선택 일까? "메인"UITableView 컨트롤러 클래스를 가지고 서브 클래스에서 클래스를 상속하는 것이 더 낫겠습니까/다른 스트림입니까? – Anders

+0

만약 그 행동이 예와 같은 방식으로 일반화 될 수 있다면. 그렇지 않다면 사용자의 요구에 부응하기 위해 구현하고 다른 스트림에 대해 구체적으로해야 할 것을 재정의하십시오. –

관련 문제