2016-07-06 10 views
0

클래스 인스턴스 메서드를 사용하여 인스턴스를 만들고 배열에 추가 할 수 있습니다. 클래스 자체의 인스턴스를 만듭니다

나는이 시도 :

var vampireArray: [Vampire] = [] 

class Vampire { 

    func createSelf() { 

     vampireArray.append(Vampire()) 

    } 

} 

을하지만 난 (lldb)

어떤 아이디어가 왜 같은 콘솔에 이상한 오류가?

+1

오류 메시지를 표시하십시오 -이 코드는 놀이터에서 작동하므로 다른 곳에 문제가 있습니다. 또한 실제로 달성하고자하는 것을 설명해야하며, 현재 시도보다 다른 해결책을 제안 할 수도 있습니다. – Moritz

답변

4

이 코드의 컨텍스트를 알지 못해도 일반적으로 클래스의 인스턴스 외부에서 클래스의 인스턴스를 만들고 추가하면 좋지 않은 아이디어입니다.

대신 원래 createSelf()을 입력하려는 위치에 vampireArray.append(Vampire()) 행을 넣어보십시오.

이 노선을 고수하고 싶었다면, 그것은 정적 메소드이어야하며 var vampireArray: [Vampire] = [] 또한 정적 변수 내부 클래스해야 createSelf() 방법처럼 보인다.

편집 : 당신이 수를 액세스하고 싶어 할 때마다, 그리고

class Vampire { 
    static var VampireCount = 0 

    init(){ 
     Vampire.VampireCount += 1 
    } 
} 

: 당신이 원하는 모든 뱀파이어의 수를 추적하는 경우

이 좋은 해결책이 될 수있다 , 그냥 사용하십시오 Vampire.VampireCount

+0

아이디어는 뱀파이어 객체 createSelf가 다른 뱀파이어 객체가 생성 될 때입니다. 배열은 뱀파이어의 수를 계속 유지합니다. –

+0

@ManosSerifios 그러나 다른 뱀파이어 오브젝트를 생성하는 것은 초기화 프로그램의 일입니다. 당신은'Vampire()'를 사용하여 그렇게합니다. 새로 만든 뱀파이어로 무언가를하고 싶다면 뱀파이어 배열과 같은 범위에서해야합니다. 배열의 개수가 전적으로 유지되는 경우에는 정수로 변경해야합니다. – TheBrownCoder

+0

@ManosSerifios 가능한 해결책을 제안하기 위해 내 대답을 편집했습니다. – TheBrownCoder

관련 문제