今天在利用AFNetworking做網路請求時總是能看到新增的CCSprite精靈總是延遲一會才顯示,google了半天沒有找到答案,
考慮到CCSprite要被渲染才能顯示,於是直接在場景中的CCLayer的draw函式上新增了一個斷點,檢視什麼時候CCLayer才被渲染,
發現每次執行下面語句時CCLayer的draw函式就不會執行,倒是CCSprite不能渲染,故執行下面函式時阻塞了draw函式的執行
NSTime *_time; //開始輪詢 -(void)startUpdateQuery{ _timer = [NSTimer scheduledTimerWithTimeInterval:_queryTimeInterval target:self selector:@selector(updateQueryPhase:) userInfo:nil repeats:YES]; [_timer fire]; } //停止輪詢 -(void)stopUpdateQuery{ [_timer invalidate]; } //輪詢過程 -(void)updateQueryPhase{ ........ }
經過修改後換成下面語句
//開始輪詢 -(void)startUpdateQuery{ [self performSelector:@selector(updateQueryPhase) withObject:nil afterDelay:_queryTimeInterval]); } //停止輪詢 -(void)stopUpdateQuery{ [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(updateQueryPhase) object:nil]); } //輪詢過程 -(void)updateQueryPhase{ ....... }
此時可以正常顯示精靈了