我处于暴露于Objective-c的早期阶段。我有一个问题是,通过这样的一个函数调用,参数将被传递为。
time_call = [[NSDate date] timeIntervalSince1970];
[Services get_time:self :@selector(callBackTime:)];
这是一个名为
的函数-(void) callBackTime:(NSString *)result
{
NSLog(@"result: %@", result);
}
我不理解传递给函数类型的结果参数,就像其他所谓的
一样我为没有明确陈述问题而道歉。 但这是Class Service中的原始功能
+(void) get_time:(id)delegate :(SEL)selector
{
NSLog(@"get time call");
}
答案 0 :(得分:1)
如果要将方法发送到对象。你需要两个对象,一个是对象(接收者),另一个是选择器,描述消息是什么。如果选择器有,那么你可能需要参数。
这里:
time_call = [[NSDate date] timeIntervalSince1970];
[Services get_time:self :@selector(callBackTime:)];
+(void) get_time:(id)delegate :(SEL)selector {
NSLog(@"get time call");
}
委托是自我(接收者),选择者是@selector(callBackTime:)
。所以在get_time中它可以像这样向委托发送消息:
[delegate performSelector:selector withObject:result] ;
答案 1 :(得分:1)
如果您询问如何从类Services传递对象,也许您可以尝试这样的事情:
-(void)callBackTime:(NSString *)result{
NSLog(@">> %@",result);
}
+(void) get_time:(id)delegate :(SEL)selector {
if([delegate respondsToSelector:selector]){
//pass the object here using the selector you have
[delegate performSelector:selector withObject:@"theObject"];
}
}
答案 2 :(得分:1)
目前还不清楚你不理解什么,我怀疑英语不是你的第一语言 - 这没关系!希望这有助于猜测。
get_time::
中的原始Services
方法不使用其参数,因此永远不会调用callBackTime:
,所以也许这就是为什么你说“不理解结果参数” “ - 没有电话,这个参数显然没有传递任何价值。
考虑get_time::
+(void) get_time:(id)delegate :(SEL)selector
{
[delegate performSelector:selector withObject:[NSDate date]];
}
现在,该方法使用其两个参数来调用传递的对象(selector
)上传递的方法(delegate
) - 该方法需要一个参数并且提供此参数([NSDate date]
- 当前日期和时间,选择方法称为get_time
)。
如果您运行此方法,则callBackTime:
方法应NSLog()
当前日期。
希望这可以帮助您了解result
来自哪里 - get_time
需要提供它。
HTH
<强>附录强>
我错过了callBackTime:
声明接受NSString *
而我的示例传递了NSDate *
。由于Objective-C输入错误,代码将起作用,但要正确callBackTime:
应该id
或我的样本应该通过NSString
,例如[[NSDate date] description]
会这样做。
答案 3 :(得分:0)
在这里你可以传递像
这样的参数这就是你正在做的事情
[Services get_time:self :@selector(callBackTime:)];
这是传递参数
所需要做的 [Services get_time:self :@selector(callBackTime:yourResultString)];