gpt4 book ai didi

iphone - UIObject 不更新屏幕上的框架(位置)

转载 作者:行者123 更新时间:2023-11-28 20:38:47 26 4
gpt4 key购买 nike

嗨,我遇到了一个有趣的问题。我所有的代码:

- (void)viewDidLoad
{

[super viewDidLoad];
didStart=YES;
[NSThread detachNewThreadSelector:@selector(updateGame:) toTarget:self withObject:nil];
}

-(void)updateGame:(id)sender{

while (1) {
NSLog(@"getting called");
CGRect frame= self.label.frame;
frame.origin.y+=1;
self.label.frame=frame;
[self.label removeFromSuperview];
[self.view addSubview:self.label];
NSLog(@"%f",frame.origin.y);
}


}

基本上我正在实现一个游戏循环。但是,尽管我确信循环正在被调用,但不知何故标签并没有在屏幕上移动。有什么想法可能是什么问题吗?

最佳答案

来自UIKit Framework Reference :

Note: For the most part, UIKit classes should be used only from an application’s main thread. This is particularly true for classes derived from UIResponder or that involve manipulating your application’s user interface in any way.

如果您的游戏世界更新代码很快,您可以只使用 NSTimer 定期在主线程上运行游戏更新。

如果您的游戏世界更新代码很慢,您将希望在后台线程上运行它,更新模型对象。然后通知主线程(可能使用 dispatch_asyncperformSelectorOnMainThread:withObject:waitUntilDone:)更新 UI。但是,如果您可以在主线程上运行更新代码,您将不太容易出现竞争条件等多线程问题。

关于iphone - UIObject 不更新屏幕上的框架(位置),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9446825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com