내 용도로 싱글 톤 클래스를 만들고 있습니다. 싱글 톤 클래스의 코드는 다음과 같습니다.매 시간마다 싱글 톤 클래스 정적 변수를 0으로 설정합니다.
//First Example
+ (id)sharedManager {
static MyManager *sharedMyManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedMyManager = [[self alloc] init];
});
return sharedMyManager;
}
//Second Example
static SingletonSample *sharedObject;
+ (SingletonSample*)sharedInstance {
if (sharedObject == nil) {
sharedObject = [[super allocWithZone:NULL] init];
}
return sharedObject;
}
초는 잘 보입니다. 하지만 나는 sharedMyManager가 매번 nil로 설정되고 매번 공유 관리자가 할당되는 첫 번째 예제에서 혼란 스럽습니다. 첫 번째 예제가 클래스의 동일한 참조 (Singleton)를 반환하는 방법에 대해 의문의 여지가 있습니다.
감사합니다.
C에서 "전역"개체에 대한 보증이 있으며 '__unsafe_unretained'로 정규화 된 참조를 제외하고는 ARC를 사용할 때 Objective-C에 참조가 있음을 보장합니다. (이 보증은 "로컬"객체에도 적용됩니다.) –
@ AminNegm-Awad OK 환호성. 그러나 나는 항상 명시 적으로 초기화 할 것이다. – trojanfoe
나도. 그러나 코드는 여전히 정확합니다. –