나는 종종 다음과 비슷한 싱글 톤 클래스를 볼 수 있습니다.iPhone SDK : 정적 변수를 할당 할 때 nil을 검사해야합니까?
@implementation SomeImplementation
static SomeClass *sharedSomeObject = nil;
+ (void) someClassMethod {
sharedSomeObject = [[SomeImplementation alloc] init];
// do something
}
@end
someClassMethod는 언제든지 호출 할 수 있습니다. 먼저 sharedSomeObject의 새 인스턴스를 할당하기 전에 nil을 검사해야합니까? 또는 sharedSomeObject가 정적이기 때문에 검사가 필요하지 않습니까? 이런 식의 코드를 보면 항상 할당 주위에 if (! sharedSomeObject)를 넣고 싶습니다.
function-static 선언은 의도적 인 것입니다. 코드를 깨끗하게 유지하고 + 공유 메소드에 대한 가시성을 줄입니다. 이렇게하면 원하는 곳 어디에서나 "sSingleton"이라는 이름을 재사용 할 수 있습니다. 네임 스페이스 오염이 없습니다. – par
또한 someClassMethod를 호출 할 때마다 sharedSomeObject의 이전 인스턴스가 누설 된 상태로 위의 코드가 누설되었다는 점을 지적 할 것입니다. 응! – par
고마워요. 다행 이군. 그런 식으로 singleton을 구현한다면, 어떻게 그것을 공개합니까? 아마도 메모리를 절약하고 필요에 따라 다시 만들어야 할 경우가 있다고 생각합니다. – memmons