创建滑块

时间:2011-12-12 10:26:13

标签: iphone objective-c cocoa-touch slider

我使用别人的代码作为我的滑块。

他的代码看起来像这样

UISlider *slider = (UISlider *)sender;
int number = [slider value];
NSString *string = [NSString stringWithFormat:@"%i", number];
label.text = string;

显示滑块值,范围为0 - 100.

它非常有意义,除了我与第一行代码混淆,后者是=(UISlider *)发送者部分之后的部分。

UISlider *slider = (UISlider *)sender;

如果我理解正确,他会将UISlider指向发件人并将其存储到滑块实例中。

我想我的问题是,这里发生了什么?是否分配了UISlider *滑块实例..这里正好在幕后发生了什么,这可以用其他类来完成吗?

感谢任何厌恶回复的人。

2 个答案:

答案 0 :(得分:2)

据我所知,上面的代码发生在UISlider的某个对象发生事件时,因此这段代码在'callback'方法中。然后此时对象已经存在,您不再需要为它分配内存(它就是那个实际调用此方法的对象);而且这个人正在做的是将'sender'参数(这是任何回调(IBAction?)方法的标准)转换为UISlider类型,确保他实际上使用此类的对象。他以这种方式对编译器说:“看,我知道这是UISlider的一个对象。请让我用滑块标准来处理它”。

如果我在某个地方出错,请跟我们纠正。

答案 1 :(得分:1)

据我所知,发件人(在本例中)负责该事件,因为它调用的事件很可能是IBAction。通常,发送方是无类型对象,可以表示任何类型的对象。在这种情况下,程序员确定它将由UISlider对象调用。因此,完成类型转换以获取类型为UISlider的对象。例如,也可以对UIButton执行此操作,此行可以由UIButton *button = (UIButton *)sender;替换