iOS의 구현 단계와 구체적인 예:

단례 모델의 뜻은 단지 하나의 실례만 있다는 것이다.단일 패턴은 특정한 클래스가 하나의 실례만 확보하고 자체적으로 실례화하여 전체 시스템에 이 실례를 제공한다.이 종류를 단례류라고 부른다.
1. 단일 예제 모드의 요점:
분명히 단례 모델의 요점은 세 가지가 있다.하나는 어떤 종류에 하나의 실례만 있을 수 있다.둘째, 이것은 반드시 스스로 이 실례를 만들어야 한다.셋째, 그것은 반드시 자체적으로 전체 시스템에 이 실례를 제공해야 한다.
2. 단일 예제 모드의 장점:
  1.실례 제어: Singleton은 다른 대상이 자신의 Singleton 대상의 복사본을 실례화하는 것을 막아서 모든 대상이 유일한 실례에 접근할 수 있도록 합니다.  2.유연성: 클래스가 실례화 과정을 제어하기 때문에 클래스는 더욱 유연하게 실례화 과정을 수정할 수 있다.
3. IOS의 단일 예제 모드의 실현 절차
Objective-c에서 하나의 사례 클래스를 실현하려면 적어도 다음과 같은 네 가지 절차가 필요하다. 1. 사례 대상에게 정적 실례를 실현하고 초기화한 다음nil로 설정한다. 2. 하나의 실례 구조 방법을 실현하여 위에서 설명한 정적 실례가 nil인지 확인한다. 만약에 이 종류의 실례가 새로 만들어지고 되돌아온다. 3. allocWithZone 방법을 다시 쓰기.다른 사람들이 alloc와 init를 직접 사용하여 새로운 실력을 얻으려고 할 때 새로운 실례가 생기지 않도록 하기 위해서다. 4. allocWitheZone,copyWithZone,release,autorelease를 적절하게 실현한다.다음은 SurveyRunTimeData의 예입니다.
static SurveyRunTimeData *sharedObj = nil; // : , 。
@implementation SurveyRunTimeData
+ (SurveyRunTimeData*) sharedInstance  // : nil
{
    @synchronized (self)
    {
        if (sharedObj == nil)
        {
            [[self alloc] init];
        }
    }
    return sharedObj;
}

+ (id) allocWithZone:(NSZone *)zone // : allocWithZone 
{
    @synchronized (self) {
        if (sharedObj == nil) {
            sharedObj = [super allocWithZone:zone];
            return sharedObj;
        }
    }
    return nil;
}

- (id) copyWithZone:(NSZone *)zone // 
{
    return self;
}

- (id) retain
{
    return self;
}

- (unsigned) retainCount
{
    return UINT_MAX;
}

- (oneway void) release
{

}

- (id) autorelease
{
    return self;
}

- (id)init
{
    @synchronized(self) {
        [super init];// .
        return self;
    }
}

@end

좋은 웹페이지 즐겨찾기