2013-05-08 2 views
2

Каков правильный способ реализации классов в универсальном приложении?Архитектура класса универсального приложения iOS

В настоящее время у меня есть два xib (по одному для каждого устройства), каждый xib вызывает один и тот же класс, и внутри этого класса у меня есть условный оператор, проверяющий, какой тип устройства в настоящее время работает в приложении, и соответствующий код для каждого из них.

Я смущен, если это правильная структура, или мне нужно создать базовый класс, а затем расширить этот класс для каждого из устройств, чтобы только перезаписать то, что соответствует каждому из них?

ответ

1

Я лично пытаюсь повторно использовать код, где могу, но многим разработчикам нравится создавать отдельные классы для версий для iPhone и iPad, чтобы избежать «кода спагетти». Это полностью зависит от сложности приложения, которое вы пишете. Если это простое приложение, то я не вижу причин просто предоставлять логику для тестирования устройства и выполнять другой код на основе этого, а также для создания нескольких классов для каждого. Хотя, есть много преимуществ для создания отдельного кода для каждого, такого как модульное тестирование или простое обновление специального кода iPad и наоборот. Я видел, что успешные разработчики используют обе методологии, и оба хорошо работают, если вы документируете и прагма правильно маркируете свой код.

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 
} 
Смежные вопросы