2012-07-24 3 views
0

그래서 최근 List/Details 앱 패턴의 기능을 확장했습니다. 세부 정보보기에서 스 와이프를 구현하여 상위 목록의 이전 또는 다음 항목으로 이동합니다.코코아에서 중요한 코드를 재사용하는 메커니즘은 무엇입니까?

내 솔루션을 사용하려면 세부 정보보기에 하나의 속성을 추가하고 목록보기에 3 개의 속성을 추가하고 각각에 여러 가지 새로운 기능을 구현하며 테이블보기의 DidSelect 메서드와 ViewDidLoad에서 일부 코드가 실행되도록해야합니다. .

나는이 코드를 다른 화면에 쉽게 추가 할 수 있도록 코코아 및 XCode 4에서 사용할 수있는 확실한 메커니즘 (스 니펫, 서브 클래 싱 및 카테고리)을 검토하고 있습니다. 애플 리케이션과 아무도 그것을 위해 적합 보입니다. 필자는 필요한 모든 변경 사항을 캡슐화하거나 다른 화면이나 프로젝트에 대한 코드 재사용을 단순화 할 수있는 메커니즘을 찾아 낼 수 없습니다.

여기서 특정한 짧은 오심 같습니다

니핏 : 오직 단일 코드 블록이므로 동일한 파일에서 여러 파일의 변경, 또는 여러 점을 요구 코드에 맞지 않는을 삽입 할 수있다.

카테고리 : 새 메서드를 추가하거나 기존 메서드를 다시 정의 할 수 있지만 새 속성을 추가 할 수는 없습니다.

서브 클래 싱 : 새로운 메소드와 속성을 추가 할 수 있지만 솔루션을 구현하기 위해 여러 클래스의 변경 사항을 처리하지 못합니다.

(스 니펫, 카테고리 및 서브 클래 싱을 사용하는) 하이브리드 방식을 사용할 수 있지만 이러한 코드 수정을 함께 패키징 할 수있는 메커니즘은 없습니다.

다른 언어 나 IDE를 사용하는 경우에도 다른 곳에서 사용 된 방법을 아는 것은 흥미로운 일입니다.

감사

답변

1

카테고리는 일반적으로 associated references를 통해 속성을 추가 할 수 있습니다. 이것은 다양한 문제에 대한 좋은 해결책입니다.


편집 : 당신은 그냥 일부 개체는 특별한 행동을 갖고 싶어, 당신은 그들이 만들 때 알고, 당신은 자신의 생성을 제어하는 ​​경우, 서브 클래스처럼 들린다. 특정 인스턴스가 특별한 동작을하고 그 인스턴스의 생성을 제어하지 않거나, 생성 된 동작을 필요로한다는 것을 모를 경우에는이를 수행 할 수있는 도구가 있습니다. 그것은 ISA swizzling이라고 불리며 KVO가 구현되는 방식입니다.

의 20 장에서는이 코드를 약간 다루고 있지만 예제 코드를 통해 코드 완성 방법을 보여주고 싶다면 ISASwizzle 샘플 코드를 참조하십시오. Robbie Hanson도 주제가 short, accessible discussion입니다. 이는 상당히 발전된 기술이므로 신중하게 사용해야하지만 매우 강력합니다.

+0

범주는 수퍼 클래스에 적용되지 않습니다. 그러나 사용자 정의 하위 클래스를 이미 작성중인 경우 카테고리 작성이 다소 중복되는 것처럼 보일 수 있습니다. 이 시나리오를 묘사하려고합니다. –

+0

메서드를 대체하기 위해 범주를 사용하지 마십시오. 일반적으로 이것은 정의되지 않은 동작입니다. 카테고리는 새로운 메소드를 추가 할 때만 사용해야합니다. –

+0

죄송합니다. 귀하의 답변에 질문의 요지가 없습니다. 스 니펫, 카테고리 또는 서브 클래 싱으로 지원되지 않는 것으로 보이는 여러 클래스/파일에서 로직을 필요로하는 솔루션을 다시 사용할 수있는 메커니즘을 확인하려고합니다. –

관련 문제