私はNSTimer
を使ってループを作るアプリケーションを作っています。アプリが起動するとviewDidAppear
にある特定の値がNSUserDefaults
に設定されているかどうかを確認し、そうでなければUIAlertView
にUITextView
と表示します。ここまですべてOKです。ユーザーは、ユーザーのデフォルト値を設定すると、アラートビューのalertView:clickedButtonAtIndex:
は、タイマーの作業を行いvoid
を呼び出します。NSTimerの奇妙なエラー
- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
[standardUserDefaults setObject:nameField.text forKey:@"host"];
[standardUserDefaults synchronize];
[self setUp];
NSLog(@"called");
}
これは[self setUp]
です。
-(void)setUp {
timer = [NSTimer timerWithTimeInterval: 1 target: self selector: @selector(reloadData) userInfo: nil repeats: YES];
[[NSRunLoop mainRunLoop] addTimer: timer forMode: NSDefaultRunLoopMode];
[self reloadData];
self.host = [self getHostName:val];
self.ip = [self getHostIP:val];
NSLog(@"reached here"); //THIS GETS CALLED SO I THINK IT WORKS
}
これは[self reloadData]
です:
- (void)reloadData {
NSArray *words = nil;
words = [[self getUptime] componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
//int sum = [[words objectAtIndex:0] intValue]/100.0;
float sum1 = ([[words objectAtIndex:0] floatValue]/10.0);
NSLog(@"%f", sum1);
[bar1 setProgress:sum1];
load1.text = [NSString stringWithFormat:@"%f", [bar1 progress]];
float sum2 = ([[words objectAtIndex:1] floatValue]/10.0);
NSLog(@"%f", sum2);
[bar2 setProgress:sum2];
load2.text = [NSString stringWithFormat:@"%f", [bar2 progress]];
float sum3 = ([[words objectAtIndex:2] floatValue]/10.0);
NSLog(@"%f", sum3);
[bar3 setProgress:sum3];
load3.text = [NSString stringWithFormat:@"%f", [bar3 progress]];
}
問題はのtableView細胞が値を取得し、白のままですが、アプリを閉じた場合、それが持っていたときに(再びそれをロードしていないということです変数はユーザーのデフォルトで変わります)、そのことは完全に機能するので、何が起こるか分かりません。私はまた、よくログにwait_fences: failed to receive reply: 10004003
を取得します(あなたがスーパービューを呼び出さないと、これが起こることがわかります)
を却下した後
setUp
のボイドを呼び出すときNSTimer:scheduledTimerWith ...メッセージはタイマーを自動スケジュールし、コードの行を保存し、保存されたコードの行はすべて... ...とにかくカーボンフットプリントをオフセットします。 – AndrewS