Objective-c - Swift의 싱글톤 패턴 작성 방법 이해
PHPz
PHPz 2017-04-28 09:04:48
0
3
610

최근 이런 식으로 쓰여진 개발 서적과 기사를 많이 봤습니다.
읽기 출처: http://www.cocoachina.com/swift/20151207/14584.html
책 읽기 출처: "iOS 개발 가이드, Zero Basics에서 App Store App Store 3판까지" 》10.4.1 예시
...
최근 기사입니다

  1. 가장 추악한 방법(스위프트 스킨, 오브젝티브-C 하트)

  2. TheOneAndOnlyKraken {
    클래스 var sharedInstance: TheOneAndOnlyKraken {

    으아악

    }
    }

저는 이런 글쓰기 방식에 대해 오랫동안 고민해 왔습니다. (일주일 넘게 다른 자료도 읽었지만 아직 완전히 이해하지는 못합니다.)
내가 이해하지 못하는 주요 논리적 관계 이해할 수 없는 것은:
(클래스에서 클래스를 선언하고 내부 클래스를 생성하는 것입니다. 이것은 약간 복잡해야 합니다.)
1. 정의된 TheOneAndOnlyKraken 클래스에서 또 다른 클래스를 정의합니다. TheOneAndOnlyKraken 유형의 sharedInstance 클래스입니다. 이러한 중첩을 사용하여 sharedInstance가 생성되면 이 sharedInstance와 TheOneAndOnlyKraken 간의 논리적 관계를 어떻게 더 쉽게 이해해야 할까요? 끝없는 루프처럼 느껴집니다.
2. sharedInstance 클래스에 정적 구조가 정의되어 있으며, 이 구조에 TheOneAndOnlyKraken 유형의 변수 인스턴스가 선언되어 있습니다. 마지막으로 인스턴스 변수가 반환됩니다. 인스턴스와 정의된 두 클래스 간의 논리적 관계를 이해하는 방법은 비교적 이해하기 쉽습니다.

PS: 저는 초보자이고 이러한 설명에 익숙하지만 논리적 구조를 이해하지 못하고 무한 루프입니다. 개인적으로 저는 이 작성 방식만 기억하고(템플릿인지는 확실하지 않음) 이해하지 못한다면 나중에 프로그램을 작성할 때 논리적 구조를 이해할 수 없을 것이라고 생각합니다. 그것이 무엇인지는 알지만 그 이유는 알지 못할 것입니다.
이런 논리적인 관계는 당분간 이해가 되지 않습니다.
안내해주세요!

PHPz
PHPz

学习是最好的投资!

모든 응답(3)
给我你的怀抱

여기서

class 키워드는 중첩 클래스를 정의하지 않지만 sharedInstance가 클래스 속성임을 나타냅니다. 물론 shareInstance는 위에서 언급한 computed property(계산된 속성)을 의미하지 않습니다. 하지만 get-only property(읽기 전용 속성)입니다. getter은 이 읽기 전용 속성의 struct(속성을 반환하는 메서드) 내에 정의됩니다. 이 struct 안에는 두 개의 정적 속성이 있습니다. onceToken이 태그라는 것을 알 수 있습니다. dispatch_once dispatch_once을 사용하면 GCD에서 일회성 메서드를 실행하는 데 사용되는 함수입니다. dispatch_once에 전달된 클로저는 한 번만 실행된다는 점만 이해하면 됩니다. 결론적으로 Static.instance = TheOneAndOnlyKraken()입니다. 이 문장은 TheOneAndOnlyKraken의 인스턴스를 초기화한 다음 이 인스턴스를 Static 구조의 정적 속성 instance에 할당하고 마지막으로 Static.instance!를 반환합니다. 즉, TheOneAndOnlyKraken의 인스턴스가 반환됩니다. 그 이유는 Static.instance = TheOneAndOnlyKraken() 이 문은 한 번만 실행되며, 앞으로 생성된 인스턴스를 직접 반환하므로 싱글톤이 보장될 수 있기 때문입니다. 이것이 분명합니까?

하지만 솔직히 말해서 Swift에서 싱글톤을 작성하는 것이 그렇게 번거로울 필요는 없습니다. 다음과 같습니다:

으아악
漂亮男人

sharedInstance는 클래스가 아니라 정적 계산된 속성입니다. 이 속성의 유형은

중괄호 안의

은 컴퓨팅 속성에 대한 코드입니다. 인스턴스를 생성하는 부분은 dispatch_oncestruct ...... return Static.instance!로 한 번만 실행되도록 보장됩니다.

PHPzhong

swift 싱글턴에 대한 외국 블로그의 글을 참고하시면 됩니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿