2013-01-18 2 views
1

objective-c에서 Singleton 개념을 이해하려고합니다.많은 변수가있는 objective-c의 Singleton 개념을 이해하려고 시도합니다.

대부분의 예제는 하나의 변수를 나타냅니다.

예를 들어 x, y, z를 반환하는 가속도계 값과 같이 많은 변수를 처리하기 위해 예제를 조정하는 방법에 대해 약간 분실했습니다.

나를 조금 더 안내 할 수 있습니까?

+0

대신 하나의 변수 사용 3 .... –

답변

4

싱글 톤은 응용 프로그램의 수명 내내 한 번만 존재할 수있는 특수 개체를 나타냅니다. 그 객체는 필요한만큼 많은 변수와 속성을 가질 수 있습니다.

// Singleton.h 

@interface Singleton : NSObject 

@property (readwrite) int propertyA; 
@property (readwrite) int propertyB; 
@property (readwrite) int propertyC; 

+ (Singleton *)sharedInstance; 

@end 

싱글의 핵심은 한 번만 생성 될 수 있다는 것입니다. 대개 Objective-C에서는 @synchronized() 지시문을 사용하여 한 번만 생성되도록합니다. 이것을 sharedInstance이라는 편의 클래스 메서드에 넣고 싱글 톤을 반환합니다. 싱글 톤은 단지 객체이기 때문에 여러 속성, 변수 및 메서드를 쉽게 가질 수 있습니다.

// Singleton.m

#import "Singleton.h" 

@interface Singleton() 
{ 
    int variableA; 
    int variableB; 
    int variableC; 
} 
@end 

@implementation Singleton 

static Singleton *sharedInstance = nil; 

+ (Singleton *)sharedInstance 
{ 
    @synchronized(self) { 
     if (sharedInstance == nil) { 
      sharedInstance = [[Singleton alloc] init]; 
     } 
    } 
    return sharedInstance; 
} 

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

- (id)init { 
    self = [super init]; 
    if (self) { 
     // Inits 
    } 
    return self; 
} 

@end 

이것은 싱글을 만들 수있는 유일한 방법은 아니다. 중요한 부분은 한 번만 만들 수 있다는 것을 기억하십시오. dispatch_once과 같은 OSX 및 iOS 용으로 개발할 때 새로운 Grand Central Dispatch 호출을 이용할 수 있습니다.

그래서 다른 객체가 다른 곳 싱글 이야기가 있다고 가정 할 수있는 싱글

에 이야기. 이것은 당신에게 어디서나 수행 할 수 있습니다 #import "Singleton.h"

- (void)someMethod 
{ 
    // Setting properties 
    int valueA = 5; 
    [[Singleton sharedInstance] setPropertyA:valueA]; 

    // Reading properties 
    int valueB = [[Singleton sharedInstance] propertyB]; 
} 
+0

안녕하세요, 이해가 안 고맙습니다 마지막은 a, b, c에서 값을 할당하는 방법입니다 a, b 또는 c에서 값을 얻는 방법. 감사합니다 레지스 – user1961175

+0

속성에 액세스하는 방법을 보여주기 위해 조금 추가되었습니다. 변수는 내부 전용이므로 싱글 톤 외부에 할당 할 수 없습니다. –

+0

이 튜토리얼을 Objective-C 프로그래밍의 기본적인 내용에서 확인하는 것이 좋습니다. 도움이 될 것입니다. http://www.raywenderlich.com/21320/objectively-speaking-a-crash-course-in-objective-c-ios6 –

관련 문제