Это потому, что когда вы делаете @selector(action)
, это ссылка на селектор, называемый «действие».Другими словами, аргумент @selector
анализируется как литерал, а не переменная.
Поскольку переменная action
ссылается на NSString
с именем селектора, вероятно, вам нужно:
[button removeTarget:target action:NSSelectorFromString(action) forControlEvents:controlEvent];
На самом деле, вам даже не нужно перебирать действия.Лучший способ сделать это - это одна строка:
[button removeTarget:target action:NULL forControlEvents:controlEvent];