2011-10-19 2 views
2

IOS 애플리케이션의 수명을 유지하기 위해 무언가가 싱글 톤 objective-c 객체에 대한 참조를 보유해야합니까?IOS 응용 프로그램의 수명을 유지하기 위해 무언가 뭔가가 singleton objective-c 객체에 대한 참조를 보유해야합니까?

예를 들어 AppDelegate에서 싱글 톤 객체를 만들거나 인스턴스화했지만 보유하지 않은 경우 나중에이 인스턴스 (인스턴스 변수 데이터 포함)를 iPhone 응용 프로그램에서 사용할 수 있습니까?

즉, 싱글 톤의 데이터가 원래대로 유지되도록 App Delegate가 인스턴스 변수 중 하나에 유지해야할까요?

답변

5

어떤 클래스도 싱글 톤 클래스에 대한 포인터를 유지해야합니다. 싱글 톤 클래스 자체는 인스턴스에 대한 포인터를 유지합니다. 기본적으로 사용자가 싱글 톤을 사용하고자 할 때 클래스 메서드 (일반적으로 shared으로 시작하는 관습에 따라)를 통해 요청합니다. 이 메소드는 단독 객체가 초기화되었는지 확인합니다. 그렇지 않으면 초기화를 수행합니다. 이미 메모리에 기존 인스턴스가있는 경우 인스턴스가 반환됩니다. 일반적으로 싱글 톤 객체는 응용 프로그램의 수명 동안 메모리에 저장됩니다.

요점은 속성 중 하나에 대한 값을 설정하면 예, 프로그램의 다른 부분에서 액세스 할 수 있어야한다는 것입니다. 그리고 아니요, 앱 델리게이트는 싱글 톤에 대한 포인터를 유지할 필요가 없습니다.

1

할당 된 인스턴스를 자동으로 해제하지 않는 한 아니요.

명시 적 할당에는 해제 할 개체에 대한 릴리스가 필요합니다. 따라서 인스턴스를 할당하면 객체는 메모리에 남아있게됩니다.