iPhone Gameloop는 별도의 스레드에서 업데이트를 렌더링합니다
-
03-07-2019 - |
문제
저는 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를 사용해야 할 수도 있습니다.
제휴하지 않습니다 StackOverflow