문제

저는 iPhone 개발을 처음 사용합니다. 다음과 같이 게임 루프 설정이 있습니다.

(void)CreateGameTick:(NSTimeInterval) in_time
{
  [NSThread detachNewThreadSelector:@selector(GameTick) toTarget:self withObject:nil];
}

내 기본 게임 진드기/렌더는 이렇게 보입니다

(void)GameTick
{
  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

  CGRect wrect = [self bounds];

  while( m_running )
  {
    [self drawRect: wrect];
  }

  [pool release];       
}

내 렌더링 기능이 호출됩니다. 그러나 아무것도 그려지지 않습니다 (나는 Core Graphics를 사용하여 파생 된 Uiview에 일부 선을 그립니다).

타이머를 통해 업데이트를 호출하면 모든 것이 좋고 좋습니다.

스레드를 통해 수행 할 때 왜 렌더가 실패하는지 말해 줄 수 있습니까? 그리고 스레드를 통해 작동하게 할 수 있습니까?

감사합니다

도움이 되었습니까?

해결책

전화 -DrawRect : 직접 전화 할 수는 없습니다. 대신 -setneedsdisplay를 사용하십시오. 그런 다음 이벤트 루프를 통해 다음 번에 뷰가 업데이트됩니다. 이것을 별도의 스레드로 실행하는 경우 performsectoronMainTheRdread를 사용해야 할 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top