iOS通用应用程序类体系结构

iOS通用应用程序类体系结构,ios,xcode4.6,ios-universal-app,Ios,Xcode4.6,Ios Universal App,在通用应用程序中实现类的正确方法是什么 我目前有两个xib(每个设备一个),每个xib调用同一个类,在该类中我有一个条件语句,检查当前运行应用程序的设备类型,并为每个设备执行相应的代码 我不知道这是正确的结构,还是我必须创建一个基类,然后为每个设备扩展该类,只覆盖与每个设备对应的内容?我个人尝试在可以的地方重用代码,但许多开发人员喜欢为iPhone和iPad版本创建单独的类,以避免“意大利面代码”。这完全取决于你正在编写的应用程序的复杂性。如果它是一个简单的应用程序,那么我认为没有理由只提供逻辑

在通用应用程序中实现类的正确方法是什么

我目前有两个xib(每个设备一个),每个xib调用同一个类,在该类中我有一个条件语句,检查当前运行应用程序的设备类型,并为每个设备执行相应的代码


我不知道这是正确的结构,还是我必须创建一个基类,然后为每个设备扩展该类,只覆盖与每个设备对应的内容?

我个人尝试在可以的地方重用代码,但许多开发人员喜欢为iPhone和iPad版本创建单独的类,以避免“意大利面代码”。这完全取决于你正在编写的应用程序的复杂性。如果它是一个简单的应用程序,那么我认为没有理由只提供逻辑来测试设备,并根据它执行不同的代码,而不是为每个设备创建多个类。尽管如此,为每种代码创建单独的代码还是有很多好处的,比如单元测试或iPad特定代码的轻松更新,反之亦然。我见过成功的开发人员使用这两种方法,如果您正确地记录代码并使用pragma标记代码,这两种方法都能很好地工作

是使用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
}