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