2011-11-10 3 views
0

나는 게임을 작성하고 있으며, "장애물"을 만들어야합니다. 나는 장애물을 무작위로 생성하는 메소드를 생성하고 반환합니다. 그들. 우선, 방법,이 같은,iPhone Objective C : 새 객체를 생성하고 반환하는 메서드입니다. 이전 객체를 생성하는 것으로 보입니다.

Obstacle newObstacle = [[Obstacle alloc] init]; 
[newObstacle setFrame:CGRectMake(randX, randY, 50, 50)]; 
return newObstacle; 

을했지만 디버깅 후, 나는 그것이 같은 주소가 호출 할 때마다 함께, 같은 객체를 반환하고 발견, 그래서하지 않았다 새로운 유일한 객체.

그래서 그때에 코드를 변경 :

return [[Obstacle alloc] initWithFrame:CGRectMake(randX, randY, 50, 50)]; 

하지만 문제는 아직도 내가 디버깅하려고 할 때 루프 내에서 중단 점을 넣을 경우 가장 중요한 부분은, 여기에있을 것, 그 이 메서드는 호출되고 있기 때문에 (생성기 메서드를 호출하기 전에 잠시 멈춤) 새로운 고유 한 장애물이 생기지 만 루프를 실행하고 모두 생성하면 배열을 검사하여 모두가 같은 대상.

여기에 무슨 일이 일어나는가에 대한 단서가 있습니까? 더 많은 코드를 제공해야하는지 알려주세요.

+2

배열에 넣은 코드를 표시하십시오. –

+0

그들 모두를 생성하는 루프 코드를 우리에게 보여 주면 도움이 될 것입니다 –

+0

당신의 Obstacle 클래스는 싱글 톤 클래스가 아니길 바랍니다. 그 클래스를 작성했다면 그것을 확인하고, 오픈 소스 라이브러리 인 경우, 한번 코드를 살펴 보시기 바랍니다. – Futur

답변

1

어쩌면 당신이 작성해야 : A *

+2

이것이 질문의 오타가 아니라 코드의 실제 오류라면 어떻게됩니까? – walkytalky

+0

실제로 질문에 오타가 있었으므로 프로그램에 별표가있었습니다. 실제로 생각한 문제가 아니라는 것을 알았습니다. 개체가 메모리의 다른 주소로 반환되고 있습니다. x와 y는 무작위이어야하지만 그들은 같은 프레임 세트를 가지고 있습니다. 왜 이런 일이 일어나는지 알아야합니다 ... 그리고 약간 업데이트 할 것입니다. – scottd70192

+0

그래서, 왜 이것이 었는지 알았습니다. 사고. 시간 함수가 임의의 시드 함수에 비해 너무 큰 정수를 반환 했으므로 시간의 변화가 거의 없을 때 실제로 시드가 변경되지는 않습니다. 간단히 말해서, 시간 함수가 씨앗에 과부하였습니다. 그래서이 문제를 해결하기 위해, 내가해야만하는 것은 다음과 같은 값으로 mod 값을 변경하는 것입니다. – scottd70192

0


Obstacle *newObstacle = [[Obstacle alloc] init]; 

을 당신이 문제가 사용하는 경우 이상이어야합니다 새로운 객체를 참조 디버깅 할 때부터 사용 된 객체는 오래 하나.

관련 문제