2012-05-24 4 views
1

처음으로 앱을 만들 때 모든 런타임 사용자 정의 개체와 속성이 내 앱 대리인에 저장되어 뷰간에 공유 할 수있었습니다. 나는이를 좋아 한 적이 항상 좀 읽고 오늘했다 그래서 변경을 원 등과 같은 단일 개체에 내 모든 런타임 속성과 객체를 이동 결코 : gblStr 어떤 뷰 컨트롤러에서 액세스 할 수 있습니다 말할 수iOS Singleton for Object storage

@synthesize gblStr; 

+(AppDataSingleton *)singleObj 
{ 
    static AppDataSingleton * single=nil; 

    @synchronized(self) 
    { 
     if(!single) 
     { 
      single = [[AppDataSingleton alloc] init]; 
     } 
    }  
    return single; 
} 

그 싱글 톤을가집니다.

위대한 작품과 이제 내 모든 애플 리케이션을 대신 내 애플 리케이션 대리인에 저장되어 있습니다.

globalSingleton = [AppDataSingleton singleObj]; 

질문이다 : 적 사건 곳에있을 것이다

AppDataSingleton *globalSingleton; 

하고있는 viewDidLoad에서

, 난 인스턴스화 각 뷰 컨트롤러

나는 특성을 추가 사용자가 앱으로 돌아와서 싱글 톤이 파괴 되었습니까? 이것을 확인해야합니까?

또는 파괴 된 경우 처음부터 응용 프로그램을 시작 하시겠습니까?

답변

2

앱이 다운되거나 실행이 중지되면 싱글 톤이 파괴됩니다. 영구 저장소 (CoreData, .plist, SQLite 등)에 객체를 작성하지 않으면 객체를 다시 만들어야합니다. ...

+0

앱을 시작한 채로 앱이 중단되거나 실행이 중지되면 걱정할 필요가 없습니다. 예를 들어 4 개의 뷰 A, B, C, D가 있고 뷰 C에서 앱을 나가면 바로 돌아와서 모든 것이 정상입니다. 하지만 내가 애플 리케이션으로 돌아와 내가보기 싫던 C 뷰를로드하는 경우가 발생하지만 싱글 톤의 데이터가 사라 졌을 까? – boostedz06

+0

대부분의 경우, 아니지만 최후의 메모리 경고를 해결하는 방법에 따라 다릅니다. –

1

내 생각에 싱글 톤은 수명을 유지해야합니다. (즉, 전체 세션). 적극적으로 지우지 않으면 앱이 비활성 상태에서 돌아올 때마다 해당 데이터가 있어야합니다. 어떤 경우에도 객체가 nil인지 확인하고 다시 인스턴스화하면 데이터를 다시 정리해야합니다.

데이터가 존재하지 않는다고 생각하는 경우 CoreData 또는 샌드 박스에 적극적으로 적용해야합니다.