앱 개발 시에 Singleton 패턴 이라는 이야기를 자주 듣게 되는데 널리 쓰이는 만큼 한번 배워 놓으면 써먹을 데가 많다.

위키 백과에서의 싱글톤 패턴에 대한 정의는 아래와 같다.

소프트웨어 디자인 패턴에서 싱글턴 패턴(Singleton pattern)을 따르는 클래스는, 
생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 
최초의 생성자가 생성한 객체를 리턴한다. 이와 같은 디자인 유형을 싱글턴 패턴이라고 한다.


쉽게 생각해서 여러 클래스에서 공통적으로 자주 쓰이는 인스턴스들을 필요할 때마다 

매번 초기화 할 필요 없이 한번 초기화 된 인스턴스를 불러온다는 것이다.

필요할 때마다 매번 인스턴스를 생성한다는 것은 시스템 자원의 낭비를 가져온다.


예제를 하나 들자면 아래 내용은 실제 네트워크를 통해 앱에서 Database에 엑세스 할때 주로 사용하였다.

Singleton.h 헤더 파일
@interface Singleton : NSObject

+ (NSString *) getBaseURL;
+ (NSString *) getProfileImageBaseURL;

@end

Singleton.m 구현 파일 @implementation Singleton + (NSString *) getBaseURL { static NSString * const BaseURLString = @"http://서버 주소"; return BaseURLString; } + (NSString *) getProfileImageBaseURL { static NSString * const BaseURLString = @"http://이미지 파일이 저장된 서버 주소"; return BaseURLString; } @end

이렇게 자주 쓰일 URL을 미리 선언 해 놓은 후


싱글톤 패턴 활용
#import "Singleton.h"

NSString *urlStr = [NSString stringWithFormat:@"%@/login_check.php",[Singleton getBaseURL]];
NSString *imageurlStr = [NSString stringWithFormat:@"%@/get_image.php",[Singleton getProfileImageBaseURL]];

이런 식으로 필요할 때마다 불러와서 사용하면 된다.


만약에 싱글톤 패턴을 사용하지 않고 필요할 때마다 인스턴스를 만들어서 사용을 한다면

기존 URL 값이 바뀌어야만 하는 상황이 생겼을 때 생성했던 모든 인스턴스를 찾아서 

각각 수정해줘야 하기 때문에 효율성 측면에서 추천하지 않는 방법이다.


'프로그래밍 > iOS - OBJC' 카테고리의 다른 글

iOS NSTimer 호출하기  (1) 2016.05.12
맥 OS X PhoneGap 설치  (0) 2016.04.27
iOS에서 위치정보 사용 동의 받기  (0) 2016.03.10
iOS 8에서 푸시 알림 동의 받기  (0) 2016.03.10
iOS 앱 자동로그인  (0) 2016.03.09

+ Recent posts