iOS:为多个按钮分配相同的选择器,哪一个是最好的方法?

时间:2014-10-31 06:01:29

标签: ios action addtarget

通常我只是以这种方式将单个选择器分配给多个UIButton

    [buttonOne addTarget:self action:@selector(someAction:) forControlEvents:UIControlEventTouchUpInside];
    [buttonTwo addTarget:self action:@selector(someAction:) forControlEvents:UIControlEventTouchUpInside];
    [buttonThree addTarget:self action:@selector(someAction:) forControlEvents:UIControlEventTouchUpInside];

今天我找到了另一种方式,

    SEL selector = NSSelectorFromString(@"someAction:");

    [buttonOne addTarget:self action:selector forControlEvents:UIControlEventTouchUpInside];
    [buttonTwo addTarget:self action:selector forControlEvents:UIControlEventTouchUpInside];
    [buttonThree addTarget:self action:selector forControlEvents:UIControlEventTouchUpInside];

请注意,我在表格中将此选择器分配给具有上述按钮的每一行。

哪种方式更有效?我假设第二种方式,因为我们一次创建选择器,但不确定。

2 个答案:

答案 0 :(得分:1)

基本上,它们是相同的。它就像

NSString *myTest = @"My text";
label1.text = myText;
label2.text = myText;

相比
label1.text = @"My text";
label2.text = @"My text";

您并非创建选择器,您只是以不同的方式引用。没有内存泄漏或没有。希望你明白我的意思。

答案 1 :(得分:0)

按照@Libran Coder的回答,我仔细检查自己,以证明哪一个最好。

SEL selector = NSSelectorFromString(@"someAction:");

NSLog(@"%p",selector);

NSLog(@"%p",NSSelectorFromString(@"someAction:"));

两者都在同一个内存地址。