2013-05-08 4 views
2

유니버설 앱에서 클래스를 구현하는 올바른 방법은 무엇입니까?iOS 범용 앱 클래스 아키텍처

현재 각 장치에 하나씩 2 개의 xib가 있으며 각 xib는 동일한 클래스를 호출하며 현재 해당 응용 프로그램을 실행중인 장치의 유형을 확인하고 각각에 해당하는 코드를 수행하는 조건문을 가지고 있습니다.

올바른 구조인지 혼란 스럽습니까? 아니면 기본 클래스를 만든 다음 각 클래스에 해당 클래스를 확장하여 각 클래스에 해당하는 것을 덮어 씁니다.

답변

1

필자는 개인적으로 코드를 재사용하려고하지만 많은 개발자들이 "스파게티 코드"를 피하기 위해 iPhone 및 iPad 버전을위한 별도의 클래스를 만들고 싶습니다. 그것은 완전히 당신이 작성하는 응용 프로그램의 복잡도에 따라 다릅니다. 간단한 응용 프로그램이라면 장치를 테스트하고 각 클래스에 대해 여러 개의 클래스를 작성하는 것에 기반하여 다른 코드를 실행하는 논리를 제공 할 이유가 없습니다. 단위 테스트 또는 iPad 특정 코드의 쉬운 업데이트와 그 반대의 경우와 같이 각각 별도의 코드를 만드는 것이 많은 이점이 있습니다. 성공적인 개발자가 두 가지 방법론을 사용하는 것을 보았습니다. 코드를 올바르게 문서화하고 pragma 표시하면 두 방법 모두 잘 작동합니다.

Here 당신은 언제나뿐만 아니라 전체 테스트를 입력하는 사람을 귀찮게하는 경우 장치 유형을 반환하는 간단한 클래스를 만들 수 있습니다 DIFF 클래스

를 사용하는 예입니다. iPod 및 기타 장치 유형을 테스트하려는 경우 유용합니다. 대부분의 시간은 프로젝트가 매우 크고 클래스가 복잡해지기 전에는 사용하는 접근 방식입니다.

// TestDevice.h 
@interface TestDevice : NSObject 

+ (BOOL)isIpad; 

@end 

// TestDevice.m 
#import "TestDevice.h" 

@implementation TestDevice 

+ (BOOL)isIpad 
{ 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
     return YES; 

    return NO; 
} 

@end 

그런 다음 당신의 .PCH에 추가하고 당신은 ... 호출하여 응용 프로그램에서 어느 곳을 다시 사용할 수 있습니다

if ([TestDevice isIpad]) { 
    // Something 
} 
else { 
    // Something else 
}