我的任务是编写一个应用程序,允许用户安排将来发送的电子邮件。
用户从日期选择器中选择日期时间,组成邮件和收件人,然后安排事件。发生日期/时间时,将发送消息。
有人可以指导我如何进行调度,让我们说一条短信。我知道如何发送短信。只是不确定事情的安排方面。
任何指针都将非常感激。
答案 0 :(得分:7)
第一个响应在技术上允许您建立一个每2.5秒发射一次的计时器,但是原始海报要求提供在特定时间点火的解决方案。为此,您需要使用以下NSTimer方法:
- (id)initWithFireDate:(NSDate *)date interval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats
第一个参数是NSDate
,表示计时器应该何时触发。
原始海报未指定,但如果这是一个iOS应用程序,那么了解如果您的应用程序不是前台应用程序,计划在远程日期/时间触发的计时器将不会触发,这一点非常重要。事实上,当您的应用在iOS上的后台时,无法安排此类事件发生,因此您必须考虑到这一点。
答案 1 :(得分:4)
这是一段代码,它设置一个使用计时器来调用自己的imageSavedLabelOff:
选择器本身(计时器)作为方法的对象参数。计时器安排在2.5秒内完成呼叫。
NSTimer *quickie = [NSTimer scheduledTimerWithTimeInterval:2.5 target:self selector:@selector(imageSavedLabelOff:) userInfo:nil repeats:NO];
答案 2 :(得分:1)
您可能已经找到了答案,但对于像我这样的未来访问者,我想建议一个答案 - 即 EventKit :
您可以随时安排/获取活动并相应地完成您的工作。希望这有助于某人。
答案 3 :(得分:0)
您应该能够使用NSRunLoop实现此目的。查看Threading Programming Guide。
答案 4 :(得分:0)
除了使用NSTimer之外,您应该知道发送电子邮件可能会因多种原因(无网络和其他网络)而失败。然后你需要重新安排请求,可能在3次重试后放弃,并通知用户。
答案 5 :(得分:0)
您可以使用 -
[self performSelector:@selector(myFunc:) withObject:nil afterDelay:5.0];