使用setAction时无法输入强制转换@selector表达式:(SEL)@selector(start :)

时间:2012-12-17 07:45:36

标签: objective-c ios cocoa

我正在读取其他人的项目代码,它可以在32位成功编译,但是当我将项目切换到64位时,就会出现一条错误消息,就像标题所说的那样。

代码:

[obj setAction:(SEL)@selector(start:)];

我知道@selector的返回值类型为SEL且参数setAction需要SEL args,但为什么它在64位失败?实际上SEL类型是什么?

谢谢!

1 个答案:

答案 0 :(得分:3)

它不应该失败,但你根本不需要演员表。 @selector()个表达式已经是SEL类型。只需写下

[obj setAction:@selector(start:)];

就C而言,SEL类型为struct objc_selector *。然而,在OS X和iOS上,它呢?由普通const char *支持,在加载时由链接器和内核统一。