【发布时间】:2014-08-07 20:43:01
【问题描述】:
我的一个程序中有一个按钮,当您单击它时,它会向 UDP 数据包发送一个字符串。字符串需要在输入后 10 被发送出去。我遇到的问题是,当我使用 NSTimer 或 [self performSelector:@selector(sendUDPMessage) withObject:nil afterDelay:2.0f];最后一个字符串是发送的内容,而不是预期的输入。
当调用 sendUDPMessage 函数时,我还尝试了几种不同类型的循环来发送数组中的下一个元素,但我没有运气。
到目前为止,这是我的代码:
- (IBAction)RecordButton:(UIButton *)sender {
NSDateFormatter *clockFormat = [[NSDateFormatter alloc] init];
[clockFormat setDateFormat:@"kk:mm:ss:SSS"];
NSString *myT = [clockFormat stringFromDate:[NSDate date]];
NSString *Str = display.text;
_dataString = [NSString stringWithFormat:@"0, %@, %@, \"%@\"", Str, Str, myT];
//[_updArray addObject:_dataString];
[self performSelector:@selector(sendUDPMessage) withObject:nil afterDelay:2.0f];
[_tableView reloadData];
我在 perform for 选择器中调用的函数是:
-(void)sendUDPMessage {
data = [_dataString dataUsingEncoding:NSUTF8StringEncoding];
[udpSocket sendData:data toHost:ipSaved port:portSaved withTimeout:-1.0 tag:0];
}
我明白为什么它不起作用。这是因为 performselector 暂停发送它而不是字符串本身。我尝试使用 sendUDPMessage 保存字符串,但发生了同样的问题。
【问题讨论】:
-
为什么有人会否决这个问题?问题很清楚。它显示了相关代码并解释了问题。你还想要什么?
标签: ios objective-c nstimer performselector