buz*_*kip 6 cocoa-touch sleep objective-c ios
我正在尝试睡一个方法(见下文),而不是textLabel从值的变化myTextLabelString,等待5秒,改为"睡5工作",等待5秒,最后改为"睡5工作第二轮" ....它只是从值开始myTextLabelString,等待10秒,然后变为"睡眠5第二次工作".
- (void)textLabelChanger:(id)sender {
NSString *myTextLabelString = [NSString stringWithFormat:@"%d", gameCountDown];
textLabel.text=myTextLabelString;
sleep(5);
textLabel.text=@"sleep 5 worked";
sleep(5);
textLabel.text=@"sleep 5 worked second time round";
return;
}
Run Code Online (Sandbox Code Playgroud)
Tho*_*mer 10
这可能会提供您寻求的结果:
-(void)textLabelChanger:(id)sender
{
NSString *myTextLabelString = [NSString stringWithFormat:@"%d", gameCountDown];
textLabel.text=myTextLabelString;
[self performSelector:@selector(updateTextLabelWithString:) withObject:@"sleep 5 worked" afterDelay:5.0];
[self performSelector:@selector(updateTextLabelWithString:) withObject:@"sleep 5 worked second time round" afterDelay:10.0];
}
-(void)updateTextLabelWithString:(NSString*)theString
{
textLabel.text=theString;
}
Run Code Online (Sandbox Code Playgroud)
有很多方法可以做到这一点.updateTextLabelWithString你可以用一个doFirstTextUpdate写"睡眠5工作"然后调用另一个选择器,就像在另一个5秒延迟之后doSecondTextUpdate使用相同的[self performSelector:]技术一样,而不是让你用不同的延迟调用两次.
您需要在sleep()Objective-C中使用该方法,这是非常罕见的.
-(void)textLabelChanger:(id)sender
{
NSString *myTextLabelString = [NSString stringWithFormat:@"%d", gameCountDown];
textLabel.text=myTextLabelString;
[self performSelector:@selector(firstUpdate) withObject:nil afterDelay:5.0];
}
-(void)firstUpdate
{
textLabel.text = @"sleep 5 worked";
[self performSelector:@selector(secondUpdate) withObject:nil afterDelay:5.0];
}
-(void)secondUpdate
{
textLabel.text = @"sleep 5 worked second time round";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22057 次 |
| 最近记录: |