ios中有没有监听系统时间变化的回调方法或通知之类的? UIApplicationSignificantTimeChangeNotification,NSSystemClockDidChangeNotification这两个通知都试过了,时间变化时没有调用(单位是分)。在线急等,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用runloop写吧,最好在需要的界面开线程启用runloop,要不然就是定时器无限检测了 我用定时器试了下,时间间隔是5秒,不过不太及时。太频繁又怕性能上不好,有没有好一点的方法?你说的runloop能不能给个大体的代码 你去网上搜吧,很多的,但是runloop同样需要for循环和do,while驱动。 dispatch_source_t试过么?是否满足需求? - (void) myTimer{ uint64_t u64Time = 0; unsigned int uiSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_IP); fd_set fdread; timeval seltime; seltime.tv_sec = 0; seltime.tv_usec = 100; uint64_t u64BeginTime = 0; uint64_t u64CurTime = 0; for ( ; m_bRunTimer; ) { NSDate* date = [NSDate dateWithTimeIntervalSinceNow:0]; NSTimeInterval ti = [date timeIntervalSince1970] * 1000; if ( !u64BeginTime ) { u64BeginTime = ti; } u64CurTime = ti; FD_ZERO(&fdread); FD_SET(uiSocket, &fdread); select(uiSocket + 1, &fdread, NULL, NULL, &seltime); u64Time = u64CurTime - u64BeginTime; uint64_t u64Hour = u64Time / ( 1000 * 60 * 60 ); uint64_t u64Minute = u64Time / ( 1000 * 60 ) % 60; uint64_t u64Second = u64Time / 1000 % 60; uint64_t u64Msec = u64Time % 1000; NSString *strTime = [ [NSString alloc] initWithFormat:@"%02llu:%02llu:%02llu.%03llu", u64Hour, u64Minute, u64Second, u64Msec]; dispatch_async(dispatch_get_main_queue(), ^{ self.m_tfTime.stringValue = strTime; self.m_tfTimeMSec.stringValue = [[NSString alloc] initWithFormat:@"%010llu", u64Time ]; }); }}需要什么时间级别的,,修改这个 timeval seltime; seltime.tv_sec = 0; seltime.tv_usec = 100;的值即可。 obj-c的一个小问题 iphone4s越狱了,还能开发吗? 关于UItouch 点击位置的问题 iphone 传json 字符串到webSercie 在xcode的storyboard中怎么使多控件等距排列 为什么我这种将值传到webservice的想法不行? GCDAsyncUdpSocket 在应用启动时如何监听UDP包 include 中 “/ ”在这起什么作用,什么时候会用到他 请问学习ios编程哪本书入门好一些 新手请教关于IOS系统读取用户卷的问题 求大神指导一下 视频实时监控开发 iTunesConnect中App的描述无论写什么都提示“描述不得包含控制字符”!!
- (void) myTimer
{
uint64_t u64Time = 0;
unsigned int uiSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
fd_set fdread;
timeval seltime;
seltime.tv_sec = 0;
seltime.tv_usec = 100;
uint64_t u64BeginTime = 0;
uint64_t u64CurTime = 0; for ( ; m_bRunTimer; )
{
NSDate* date = [NSDate dateWithTimeIntervalSinceNow:0];
NSTimeInterval ti = [date timeIntervalSince1970] * 1000;
if ( !u64BeginTime )
{
u64BeginTime = ti;
}
u64CurTime = ti; FD_ZERO(&fdread);
FD_SET(uiSocket, &fdread);
select(uiSocket + 1, &fdread, NULL, NULL, &seltime); u64Time = u64CurTime - u64BeginTime;
uint64_t u64Hour = u64Time / ( 1000 * 60 * 60 );
uint64_t u64Minute = u64Time / ( 1000 * 60 ) % 60;
uint64_t u64Second = u64Time / 1000 % 60;
uint64_t u64Msec = u64Time % 1000;
NSString *strTime = [ [NSString alloc] initWithFormat:@"%02llu:%02llu:%02llu.%03llu", u64Hour, u64Minute, u64Second, u64Msec];
dispatch_async(dispatch_get_main_queue(), ^{
self.m_tfTime.stringValue = strTime;
self.m_tfTimeMSec.stringValue = [[NSString alloc] initWithFormat:@"%010llu", u64Time ];
});
}
}
需要什么时间级别的,,修改这个
timeval seltime;
seltime.tv_sec = 0;
seltime.tv_usec = 100;的值即可。