지금은 목표와 신속 함을 학습했습니다. Obj C와 편의 초기화 프로그램의 초기화 프로그램을 이해하고 Factory 메소드를 이해합니다. 나는 또한 "생성자"라는 용어를 들었지만 공장 메서드 나 초기화 메소드와 어떻게 다른지 잘 모르겠습니다. "생성자"는 초기화 프로그램을 참조하는 또 다른 방법일까요? 감사합니다팩토리 메서드와 생성자의 차이
2
A
답변
3
차이는 없습니다.
인스턴스 개체를 만드는 클래스 메서드는 편의상 할당 자 또는 거의 생성자가 아닙니다. 인스턴스 객체가 자동 릴리즈 될 때 편의 할당 자라는 용어가 종종 사용되었지만 ARC에서는 중요하지 않게되었습니다.
NSString *string1 = [NSString string]; // autoreleased
NSString *string2 = [NSSString new]; // ownership transfer
기본적으로 그들은
+alloc
및
-init…
플러스의 조합 -
-autorelease
- 그것은 편의를 할당됩니다. 2 년 전에 (또는) 년 전에는 그것들을 factor method라고 부르기 시작했습니다.
그러나 이름은 잊어 버리십시오. 그들이하는 일과 그들이 존재하는 이유에 대해 생각하십시오. +alloc
- -init…
조합을 사용하면 클래스는 결정할 기회가 없으며, 생성 할 하위 유형은 -init
의 인수에 따라 달라집니다. 예를 들어 보겠습니다. NSSArray
에는 _NSSmallArray
및 _NSBigArray
의 두 (개인) 서브 클래스가 있습니다. -initWithEstimatedSize:
방법으로 용량으로 제공 한 예상 크기에서 하위 유형을 선택하려고합니다. +alloc
은 어떻게 선택하고 할당 할 하위 유형을 결정할 수 있습니까? init 메소드를 어떤 인수로 전달할지는 모른다.
생성자 또는 편리한 할당자를 사용하면 객체 할당을 매개 변수화 할 수 있습니다. +newArrayWithEstimatedSize:
또는 +arrayWithEstimatedSize:
이 문제를 해결할 수 있습니다.
이제 공장 초기화 메소드를 호출해야합니다. 죄송합니다. 이야기는 같습니다.
OP가 실제로 Swift 정보를 찾고 있었는지 여부는 명확하지 않지만 Swift는 [편의점 _ 초기화 도구 _]를 형식화했다는 점에 유의할 가치가 있습니다 (https://developer.apple.com/library). /prerelease/content/documentation/Swift/Conceptual/Swift_Programming_Language/Initialization.html#//apple_ref/doc/uid/TP40014097-CH18-ID216) Swift의 "초기화 프로그램"은 ObjC에서 "생성자"가 사용되는 기능을 포함합니다 . –
Swift와 Objective-C 태그가 붙어 있습니다. Swift의 개념은 Objective-C에서 빌려 왔기 때문에 Objective-C로 설명 할 수 있습니다. 나머지는 마지막 세 단락에서 언급 한 문구입니다. –