2012-10-16 4 views
0

내 응용 프로그램에는 일부 뷰 컨트롤러에 뷰 컨트롤러가 많이 있습니다. 일부 변수는 다른 클래스에서 사용하고 싶습니다. .my 변수는 응용 프로그램 위임 파일에 없습니다. 내 응용 프로그램의 모든 부분을 전역으로 사용합니까?클래스 변수를 글로벌 변수로 만들기

+0

은 appDelegate ..에서 액세스 할 수있는 viewController입니다. – vishy

답변

1

제 의견으로는 싱글 톤 패턴을 사용하는 것이 어떻습니까? 따라서 해당 클래스의 변수를 사용하려면 인스턴스를 가져온 다음 변수를 사용하십시오.

@interface MySingletonViewController : UIViewController 
{ 
    //here your variables 
    int globalVariables; 
} 
@property (nonatomic, assign) int globalVariables; 
+ (MySingletonViewController *)sharedSingleton; 
@end 

@implementation MySingletonViewController 
@synthesize globalVariables; 
static MySingletonViewController *sharedSingleton = nil; 
+ (MySingletonViewController *)sharedSingleton 
{ 
    @synchronized(self) 
    { 
    if (sharedSingleton == nil) 
     sharedSingleton = [[MySingleton alloc] init]; 

    return sharedSingleton; 
    } 
} 

@end 

UIViewController는 실제로 클래스이므로, 우리는 다음과 같이 할 수 있습니다.

+0

나는 UIViewController 수명을 제어하는 ​​것이 + (MySingletonViewController *) sharedSingleton이 아니라고 생각한다. 독립 실행 형 클래스의 옵션을 사용하는 것이 좋으며 응용 프로그램 전반에 도움이됩니다. – Orange

1

물론 가능하지만 전체 앱을 통해 전역 변수를 사용하는 것은 확실히 아키텍처 설계가 손상되었습니다.

MyVeryOwnClass *g_MyVeryOwnClassPointer = nil; 

와 같은 액세스합니다 :

로 구현 부분 외부의 *하는 .m 파일 - (클래스에 대한 포인터 당신의 경우) 목표 - C C를 기반으로

, 당신은 변수를 정의 할 수 있습니다

extern MyVeryOwnClass *g_MyVeryOwnClassPointer; 
/* do some operations with your pointer here*/ 

또는 extern 선언을 헤더 파일로 이동하십시오.

추 신 : 싱글 톤을 사용할 수 있습니다. 그들은 최선의 해결책은 아니지만 원시 변수를 사용하는 것이 좋습니다.

관련 문제