私は iOS 開発の初心者です。タイマーを実行するための単純な Objective-C クラス「MoneyTimer.m」があり、そこからタイマーの値の変化に応じて UI ラベルを更新したいと考えています。非 UI スレッドから UI 要素にアクセスする方法を知りたいです。Xcode 4.2 とストーリーボードを使用しています。
BlackBerry では、イベント ロックを取得するだけで、非 UI スレッドから UI を更新できます。
//this the code from MyTimerClass
{...
if(nsTimerUp == nil){
nsTimerUp = [NSTimer scheduledTimerWithTimeInterval: 1.0 target:self selector:@selector(countUpH) userInfo:nil repeats: YES];
...}
(void) countUpH {
sumUp = sumUp + rateInSecH;
**//from here i want to update the UI label **
...
}
ベストアンサー1
最も早くて簡単な方法は次のとおりです。
- (void) countUpH{
sumUp = sumUp + rateInSecH;
//Accessing UI Thread
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
//Do any updates to your label here
yourLabel.text = newText;
}];
}
この方法であれば、別の方法に切り替える必要はありません。
お役に立てれば。
サム