私は iOS 開発に不慣れで、ここで何が起こっているのかを理解しようとしています。複数のViewControllerとクラスを持つタブバーアプリケーションがあります。私のクラスの 1 つが呼び出され、正常に動作する uilabels を更新します。次に、別のクラスが呼び出され、同じ ViewController 上の他のいくつかの uilabel を更新することを目的としたバックグラウンド ループも実行されます。それらはループからの最初のエントリで 1 回更新されますが、ループがバックグラウンドで実行されている間は更新されません。NSLog を使用して出力をログに記録しているため、ループがまだ実行されており、詳細が変化していることがわかります。
ViewController は回転もサポートします。画面を回転すると、ループ内の数値が uilabel に描画され、画面を再度回転するまで固定されます。つまり、ループを 5 にカウントしてからリセットするように設定すると、ループ I 回転画面は、1 から 5 までのどの数字が uilabel に描画されるかによって異なります。
単一の ViewController アプリケーションでは、これは正常に機能しており、ループが実行され、期待どおりに uilabels がライブで更新されます。
uilabels を更新するクラスは [super viewDidLoad] から呼び出されます。
ありがとう
これがループのあるクラスです:-
+ (void)Loop:(FirstViewController *)vc
{
NSLog(@"start");
static NSUInteger counter1 = 0;
NSLog(@"with count %d", counter1);
counter1++;
NSLog(@"count ++ %d", counter1);
NSString *label01 = [NSString stringWithFormat: @"%d", counter1];
//update uilabel
vc.cha01.text = label01;
if (counter1 >= 5) {
counter1 = 0;
}
// run loop with 1 second delay
[self performSelector:@selector(Loop:) withObject:nil afterDelay:1];
}