2

我正在尝试编写一个带float参数的方法并使用 performSelector 调用它,但是这样做时出错了。以下是我的代码:

[sender performSelector:selector withObject:progress/total];

在这里,进度和总数都是float可变的。

我正在尝试在不同的类中调用以下方法:

-(void) updateProgress:(float)fl {
    
}
4

2 回答 2

11

您需要传递一个真实的对象,而不是 int 或 float 等基本类型之一。

将其包装成一个NSNumber对象:

[sender performSelector:selector withObject:[NSNumber numberWithFloat:progress/total]];

-(void) updateProgress:(NSNumber *)aProgress {
   float fProgress = [aProgress floatValue];
}
于 2010-10-16T09:10:45.257 回答
1

这是因为-performSelector:withObject:仅适用于Objective-C 对象float不是其中之一。

为什么不直接使用

[(TheClass*)sender updateProgress:progress/total];

?

于 2010-10-16T09:11:25.227 回答