2014-07-04 2 views
0

저는 Objective C를 처음 접했고이 문제를 발견했습니다. 여러 클래스와 주요 함수에서 액세스 할 수있는 Objective C에서 클래스의 글로벌 인스턴스를 만드는 방법은 무엇입니까?Objective-C에서 클래스의 전역 인스턴스를 만드는 방법

+1

중복 가능성 (http://stackoverflow.com/questions/8808159/objective-c-global-variables)의 HTTP – edtheprogrammerguy

+0

중복 : // 유래. co.kr/questions/8808159/obj ective-c-global-variables – edtheprogrammerguy

+0

@dasblinkenlight는 스레드로부터 안전하지 않습니다. 현재 권장되는 방법은'dispatch_once'를 사용하는 것입니다. 그렇지 않으면'@synchronized'를 사용할 수 있습니다. http://www.galloway.me.uk/tutorials/singleton-classes/ – jcaron

답변

1

이 특정 인스턴스를 반환하는 클래스에 메서드를 추가합니다.

가장 일반적인 경우는 싱글 톤입니다. "공유 인스턴스"를 조회 할 수도 있습니다.

1

이 방법으로 작업을 수행 할 수 있습니다

+(MyClass *) sharedInstance 
{ 
    static id sharedInstance = nil; 
    @synchronized(self) 
    { 
     if (!sharedInstance) 
     { 
      sharedInstance = [[MyClass alloc] init]; 
     } 
     return sharedInstance; 
    } 
} 

그냥이 한 줄 코드로 객체에 액세스 :

[MyClass sharedInstance] 

는 희망이 도움이! 해피 코딩 :)

-1

당신은 싱글 톤을 사용하는 모든 파일이있을 것이라는 점을 수행하여, 당신의 .PCH 파일의 .H 파일을 가져올 수 있습니다이 수입 :

YourClass.h :

@interface YourClass : NSObject 

/** 
* Method to get the singleton instance 
* @return Instance of YourClass 
*/ 
+ (YourClass *)instance; 
@end 

YourClass 하는 .m : 대물-C - 글로벌 변수]의

#import "YourClass.h" 

@interface YourClass(){ 

} 
@end 

#pragma mark - 

@implementation YourClass 

- (id)init{ 
    //prevents normal inits 
    return nil; 
} 

+ (YourClass *)instance 
{ 
    static YourClass *instance = nil; 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     instance = [[self alloc] initSingelton]; 
    }); 
    return instance; 
} 

- (id)initSingelton{ 
    if (self = [super init]) { 
     //do stuff here 
     return self; 
    } 
    return nil; 
} 
+0

왜 투표가 늦습니까? –

관련 문제