通常我只是以这种方式将单个选择器分配给多个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];
请注意,我在表格中将此选择器分配给具有上述按钮的每一行。
哪种方式更有效?我假设第二种方式,因为我们一次创建选择器,但不确定。
答案 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:"));
两者都在同一个内存地址。