我正在读取其他人的项目代码,它可以在32位成功编译,但是当我将项目切换到64位时,就会出现一条错误消息,就像标题所说的那样。
代码:
[obj setAction:(SEL)@selector(start:)];
我知道@selector
的返回值类型为SEL
且参数setAction
需要SEL
args,但为什么它在64位失败?实际上SEL
类型是什么?
谢谢!
答案 0 :(得分:3)
它不应该失败,但你根本不需要演员表。 @selector()
个表达式已经是SEL
类型。只需写下
[obj setAction:@selector(start:)];
就C而言,SEL类型为struct objc_selector *
。然而,在OS X和iOS上,它呢?由普通const char *
支持,在加载时由链接器和内核统一。