ios - 循环不会像我希望的那样在 objective-c 中更改标签

标签 ios objective-c c

<分区>

我只是在 xcode 上玩弄 objective c,这似乎是一个愚蠢的问题,但这是我的代码块,它可以工作,但不能按我想要的方式工作。

        int i = 10;
    int x = 0;
    do {

        printf("Count is: %i\n", x);
        NSString *Result = [[NSString alloc] initWithFormat: @"%i", x];
        counting.text = Result;
        x++;
        usleep(1000000);
    } while (x < i);

它只在循环结束时将标签更改为 9,它可以正常打印到控制台,但它应该从 0 计数到 9 并在应用程序上显示。 我想我需要做多线程,但是示例是用 java 编写的,所以我不能将它们应用于这种语言

最佳答案

它不会更新,因为您正在阻塞(使用 usleep)主线程,该线程执行所有绘图(以及触摸和任何其他 UI 交互)。您需要设置文本,然后让主线程返回。你应该让这个线程只是设置延迟调用:

int i = 10;
int x = 0;
do {
    printf("Count is: %i\n", x);
    NSString *Result = [[NSString alloc] initWithFormat: @"%i", x];
    [counting performSelector:@selector(setText:) withObject:Result afterDelay:x];
    x++;
} while (x < i);

关于ios - 循环不会像我希望的那样在 objective-c 中更改标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18405967/

相关文章:

c - 在二维中,如何判断三角形和 AABB 是否相交

ios - 删除字符串开头和结尾的空格

html - iPad 和 iPad 2 以不同方式呈现 CSS?

Iphone sdk - 从特定的 localized.strings 文件获取本地化文本

ios - 接入点 : Screen blinks but no text is shown

嵌套取消引用的成本可以忽略不计吗?

c++ - 如何用c编写编程语言和头文件

objective-c - 将 UIImage 设置为背景 - 不平铺

ios - 为什么 Notification 适用于 NSHourCalendarUnit 但不适用于 NSWeekCalendarUnit?

iphone - 如何确定哪个 UIAlertView 调用了委托(delegate)。