2011-01-07 3 views
1

아시다시피, 우리는 Object C에서 정적 변수 매개 변수를 정의합니다.Object C 정적 변수 메모리 질문

메모리 관리 뷰에서이 정적 Object 변수를 매핑하는 방법을 정의합니다.

@interface classA:NSObject 
+ (id) getInstance; 
@end 

static ClassA staticObject = nil; 
@implementation ClassA 
+ (id){ 
     if(staticObject) 
     staticObject = [doinitStuff]; 
     return staticObject 
} 
@end 

예를

에 대한

이제 질문은 : 출시 될 때, 을 staticObject 메모리를 보유 할 책임이있는 사람. 내가 생각하고 무엇을

:

런타임 OS는 응용 프로그램을 모니터링하며, 응용 프로그램이 정말 종료,이 메모리가 해제 될 경우에만 사용할 수 있습니다. RUNtime보기에서, 그것은 유지되고 count = 1; // 단지 1

어떤 생각이라도 대단히 감사 할 것입니다. 감사합니다. .

답변

2

다른 변수와 다르지 않습니다. 만약 당신이 주위에 붙어 있기를 원한다면, retain 그것. 그렇지 않은 경우 (또는 보유한 경우 릴리스/자동 해제)합니다.

응용 프로그램을 종료 할 때 메모리를 해제 할 필요는 없습니다. 앱이 종료되면 모든 리소스가 관계없이 수확됩니다.

+0

감사합니다. bbum, 나는 여전히 혼란 스럽습니다. 왜냐하면 일반적으로 init을 할 때 항상 alloc을하고 나서 리턴합니다. 예 : staticObject = [ClassA alloc] init]; 메모리가 할당 되었습니까? – Jeff

+0

@ 제프, 맞습니다. staticObject는 이제 적어도 1 이상의 보유 수를 갖습니다. 이제는 정확하고 프로그램의 수명 동안 지속됩니다. bbum의 요점은 그것이 살기를 원한다면 할당, 복사 또는 유지를 통해 유지를 확실히하는 것입니다. –

+0

위대한 강사, 여러분 모두. 고마워. – Jeff