我在ios教程中看到了这个陈述。我知道这个陈述的意思。 这是否意味着将发件人对象的含义指向另一个对象。
UISlider *s=(UISlider *)sender;
任何人都可以帮助我。提前谢谢
答案 0 :(得分:1)
将sender
强制转换为UISlider*
。你告诉编译器“相信我,我知道sender
是UISlider*
”。分配到s
后,您可以将s
用作UISlider
,而无需改进类型检查(如果id
)且没有警告(如果sender
是objc指定类型的对象)。如果它不是UISlider
,那么您的程序可能会在运行时遇到错误。
另请注意,sender
通常与执行操作的对象/控件相关联,并且通常使用类型id
声明,例如- (IBAction)performSomeAction:(id)sender
。在这种情况下,UISlider * s = (UISlider*)sender;
是多余的。我赞成更简单的UISlider * s = sender;
。
答案 1 :(得分:0)
通常,将发件人参数命名为sender
类型为id
的方法。 id
是通用对象指针。该代码的要点是将发送者的类型转换为UISlider*
,以便您可以在其上调用UISlider的方法而不会生成编译器警告。
答案 2 :(得分:0)
这是类型转换。
这里发件人被类型转换为UISlider
。
它类似于C
语法,
int x = (int)aValue;