2014-04-15 1 views
1

기본적으로 MyClassXY라는 클래스에는 5 개의 속성이 있습니다. 내 MyClassXY.m에는 매 0.1 초마다 호출되는 nstimer가 있으며이 속성을 Main_game_scene viewcontroller 클래스에서 이러한 속성을 설정하는 모든 값으로 설정합니다. 하지만 Main_Select_level viewcontroller에서 MyClassXY를 할당했습니다. MyClassXY 개체를 Main_Select_level에서 Main_game_scene viewcontroller로 전달하기 위해이 문제를 해결할 수있는 유일한 방법입니까 아니면이를 해결할 수있는 방법이 있습니까? 두 클래스가 상호 작용할 필요가있는 다른 많은 변수가 있기 때문에 완전히 새로운 MyClassXY 객체를 할당하고 싶지는 않습니다. 어쩌면 클래스 메서드?두 클래스에 동일한 속성을 사용하려면 어떻게해야합니까?

초보자를위한 질문입니다.

+0

문제가 발생하지 않았습니다. 다른 방법을 알지 못하기 때문에 타이머가 한 클래스의 값을 다른 클래스의 값으로 복사 할 수 있습니까? – Wain

+0

오, 어쩌면 내가 말 했어야했는데, 메신저를 사용하여 멀티 플레이어 게임을 만들었습니다. 내 말은 구조체의 멤버를 속성 값으로 설정 한 다음 0.1 초마다 다른 장치에 구조체를 보내는 것입니다. – user3534757

+0

인스턴스를 전달하는 것이 잘못된 이유는 무엇입니까? – Wain

답변

0

MyClassXY를 singleton으로 수정할 수 있습니다. 그런 다음 프로그램에서 어디서나 필요한 참조를 얻을 수 있지만 항상 동일한 인스턴스가됩니다. 예를 들어, [UIApplication sharedApplication]은 싱글 톤입니다.

+0

싱글 톤에 데이터를 추가하려면 어떻게합니까? 어디서나 가이드에서 찾을 수 있습니다. – user3534757

+0

http://www.galloway.me.uk/tutorials/singleton-classes/ 다음을 사용합니다. YourClass * c = [YourClass sharedInstance]; – Szu

+0

.h 파일의 클래스에 다른 속성을 추가하기 만하면됩니다. – Paulw11

0

Main_game_scene과 Main_Select_level의 관련성에 따라 다릅니다. 첫 번째부터 두 번째까지 segue가 있습니까? 모달 또는 푸시? 어느 것이 먼저 오나요? 그런 다음 소스 뷰 컨트롤러에서 대상 뷰 컨트롤러로 개체를 전달할 수 있습니다. 모든 앱에 대해 MyClassXY 클래스의 인스턴스가 하나만 필요하면 Singleton을 사용하십시오.

0

당신은 만들고 사용하여 게임을 제시 :

ViewController *viewcont = [[ViewController alloc]initWithNibName:@"ViewController" bundle:nil]; 
[view2 presentViewController:viewcont animated:NO completion:nil]; 

(당신의 타이머를 사용하여) 게임 센터의 상호 작용을 관리하는 클래스를 통과, 당신이 할 필요가있다 :

ViewController *viewcont = [[ViewController alloc]initWithNibName:@"ViewController" bundle:nil]; 
viewcont.scoreController = self.scoreController; 

[view2 presentViewController:viewcont animated:NO completion:nil]; 

여기서 scoreController은 게임 센터 상호 작용 컨트롤러에 대한 참조를 보유하는 ViewController의 속성이고 self.scoreController은 이전에 만든 클래스의 인스턴스입니다.