지난 글에서 AppDelegate가 비즈니스 로직을 담당하고 View단의 클래스는 모두 AppDelegate를 통해서 접근 가능한 패턴을 설명해드렸습니다.
이번에는 지난 글에 보충하여 View 클래스를 어떻게 관리하고 접근하는 지에 대해 설명하고자 합니다.
대부분의 View는 IB로 만든 xib형태의 파일과 이를 참조하여 초기화하는 View Controller로 구성되어 있습니다. 이들 View Controller는 한 번 초기화한 이후로 재활용하는 경우가 많아서 객체의 멤버 변수로 저장하고 재사용하게 되는데 이들 변수의 위치가 고민스러웠습니다.
어디에든 이들 View Controller를 접근할 수 있다면 많이 편하리라 생각이 들어서 View만 전담하는 클래스를 작성하는 패턴을 생각해봤습니다.
ViewFactory라는 클래스는 AppDelegate의 applicationDidFinishLaunching 정도에서 초기화되고 AppDelegate를 통하여 접근하도록 하여 어디에서나 ViewFactory를 이용하여 View Controller를 초기화하고 재사용할 수 있도록 합니다.
대략 아래와 같은 형태가 될 것입니다.
AppDelegate.h
AppDelegate.m
ViewFactory 클래스는 해당 App에 사용되는 대부분의 View Controller 및 아이콘 등을 초기화하고 필요할 때마다 가져다 쓸 수 있도록 하게 됩니다.
여기서 최초 진입점은 AppDelegate이고 AppDelegate에서 얻어온 ViewFactory 인스턴스를 통하여 원하는 View Controller의 인스턴스를 가져오게 됩니다. 그리고, 가급적이면 명시적인 클래스를 사용하지 않고 id를 사용하여 코딩시 import 문제를 줄일 수 있도록 합니다. 단, 성능 문제가 있으므로 적절하게 조절하여 사용하시면 되겠습니다.
개발하면서 정리하는 과정이라 불완전할 수 있습니다. iPhone 개발자 여러분들의 피드백도 기다리겠습니다.
이번에는 지난 글에 보충하여 View 클래스를 어떻게 관리하고 접근하는 지에 대해 설명하고자 합니다.
대부분의 View는 IB로 만든 xib형태의 파일과 이를 참조하여 초기화하는 View Controller로 구성되어 있습니다. 이들 View Controller는 한 번 초기화한 이후로 재활용하는 경우가 많아서 객체의 멤버 변수로 저장하고 재사용하게 되는데 이들 변수의 위치가 고민스러웠습니다.
어디에든 이들 View Controller를 접근할 수 있다면 많이 편하리라 생각이 들어서 View만 전담하는 클래스를 작성하는 패턴을 생각해봤습니다.
ViewFactory라는 클래스는 AppDelegate의 applicationDidFinishLaunching 정도에서 초기화되고 AppDelegate를 통하여 접근하도록 하여 어디에서나 ViewFactory를 이용하여 View Controller를 초기화하고 재사용할 수 있도록 합니다.
대략 아래와 같은 형태가 될 것입니다.
AppDelegate.h
@interface AppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
id viewFactory;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) id viewFactory;
@end
UIWindow *window;
id viewFactory;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) id viewFactory;
@end
AppDelegate.m
@interface AppDelegate()
- (void)initializeObjects;
@end
@implementation AppDelegate
@synthesize window;
@synthesize viewFactory;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
[window makeKeyAndVisible];
[self initializeObjects];
}
- (void)dealloc {
[viewFactory release];
[window release];
[super dealloc];
}
- (void)initializeObjects {
viewFactory = [[ViewFactory alloc] init];
}
- (void)initializeObjects;
@end
@implementation AppDelegate
@synthesize window;
@synthesize viewFactory;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
[window makeKeyAndVisible];
[self initializeObjects];
}
- (void)dealloc {
[viewFactory release];
[window release];
[super dealloc];
}
- (void)initializeObjects {
viewFactory = [[ViewFactory alloc] init];
}
ViewFactory 클래스는 해당 App에 사용되는 대부분의 View Controller 및 아이콘 등을 초기화하고 필요할 때마다 가져다 쓸 수 있도록 하게 됩니다.
여기서 최초 진입점은 AppDelegate이고 AppDelegate에서 얻어온 ViewFactory 인스턴스를 통하여 원하는 View Controller의 인스턴스를 가져오게 됩니다. 그리고, 가급적이면 명시적인 클래스를 사용하지 않고 id를 사용하여 코딩시 import 문제를 줄일 수 있도록 합니다. 단, 성능 문제가 있으므로 적절하게 조절하여 사용하시면 되겠습니다.
개발하면서 정리하는 과정이라 불완전할 수 있습니다. iPhone 개발자 여러분들의 피드백도 기다리겠습니다.
