分类: 嵌入式
2011-08-04 19:01:59
目的,给timer触发的函数传递参数。
-(void) startCheckTimer: (PackageInfo *) package
{
DeviceInfo *deviceInfo = package.deviceInfo;
NSTimeInterval timeInterval = [self getTimeIntervalByConnectionType: deviceInfo.connectionType];
// 使用 NSInvocation 传递除 NSTimer 本身之外的其他参数
SEL selector = @selector(checkPackageStatus:);
NSMethodSignature *signature = [TestUdpClientAppDelegate instanceMethodSignatureForSelector: selector];
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
[invocation setTarget: self]; // 0
[invocation setSelector: selector]; // 1
[invocation setArgument: &package atIndex: 2]; // 2
// 指数在0和1表示隐藏的论据自我和_cmd,分别,你应该设置这些值直接与setTarget:和setSelector:方法。
// 2,对于使用指数通常在消息传递的参数更大。
[NSTimer scheduledTimerWithTimeInterval: timeInterval invocation:invocation repeats: NO];
}