적절한 클래스의 객체를 얻기 위해 (나는 다른 개체가 다음 사람이 더 복잡 제기 드롭 단순화) :신속한 상속 문제. 어떻게 두 개의 클래스가
class Person
{
var name: String = "Default name"
init(object: PersonEntity)
{
name = object.daysMask
}
}
class Employer: Person
{
}
나는 사람
func getConiguratedPerson(name: String) -> Person
{
let person = Person()
person.name = name
}
에게 나를 위해 구성 기능을 가지고
let person = getConiguratedPerson("Alex")
하지만 내가 필요로하는 경우: 경우
나는 Person
나는 간단하게이 작업을 수행 얻으려면대신 나는 우리가 간단하게이 작업을 수행 할 수 있습니다 오브젝티브 C에서뿐만 아니라
let employer = getConiguratedPerson("Alex") // returns Person as expected but need to have employer instead.
이 기능을 사용하려면 :
Employer *employer = Employer([self getConiguratedPerson:"Alex"]) if I remember.
감사하지만, 만드는 방법 팩토리 메소드 그때? 팩토리 메서드 패턴과 비슷한 메서드가 필요하지 않으면. 또는 예를 들어 인덱스 경로에있는 행의 셀도 UITableViewCell을 반환하지만 원하는 경우 임의의 셀을 구성 할 수 있습니다. –
cellForRow의 경우 일반적으로 제네릭과 as가 모두 필요합니다! 캐스트. 가장 일반적인 경우 "Self를 반환하는 클래스"는 상속 문제로 인해 클래스에서 가능하지 않습니다 ("Self를 반환하는 프로토콜"을 검색하면 그에 대한 많은 논의가 나와 있습니다). 어떠한 경우에도 일반적인 대답은 없습니다. 당신이하고자하는 일을 다루는 분명한 질문이 필요합니다. 설명하는 경우 init이 정확합니다. 어떤 특정 문제에 대해 공장을 원하십니까? –
특히, 대부분의 코드에서 원하는 셀을 구성 할 수 없습니다. 어떤 종류의 셀을 반환하는지 알 필요가 있습니다 (그렇지 않으면 어떻게 구성합니까?). 알고 있다면 일반적으로 제네릭이 답입니다. –