gpt4 book ai didi

iphone - 如何在循环遍历字符时将字符显示到 UILabel?

转载 作者:行者123 更新时间:2023-11-28 18:45:35 25 4
gpt4 key购买 nike

我有一个在单独的线程上执行循环的方法。出于对我的程序有用的原因,我调用此方法使用,

[self performSelectorInBackground:@selector(myMethod:) withObject:arg];

以及实际的方法,

- (void)myMethod:(NSString *)arg {
NSAutoreleasePool *pool = [NSAutoreleasePool new];
for (int i = 0; i < [arg length]; i++) {

unichar ch = [arg characterAtIndex:i];
NSLog(@"Processing character %c",ch);

NSString *currentChar = [[NSString alloc] initWithFormat:@"%c", ch];
viewController.outputLabel.text = currentChar;
[currentChar release];


switch (ch) {
//Do my stuff
}

[pool release];

}

现在我的问题是只有最后一个被处理的字符显示在我的 UILabel 中,但是当我在运行程序时检查我的控制台时,随着字符的处理,它们被一个一个地显示到控制台(使用 NSLog)。这正是我希望在我的标签中看到的行为。

我还应该告诉你,每次我处理一个字符(在 switch 语句中)时至少会有一点延迟,因为我正在调用 [NSThread sleepForTimeInterval:delayTime];至少几次。

最佳答案

您正试图从主线程以外的线程更新 View (您的“outputLabel”),这是不允许的。

您需要强制从主线程进行更新。您可以通过调用

- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait

所以,像这样:

[viewController.outputLabel performSelectorOnMainThread: @selector( setText: ) withObject: currentChar waitUntilDone: YES];

关于iphone - 如何在循环遍历字符时将字符显示到 UILabel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4168678/

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