可以像这样编写代码:
static @protocol MyProtocol <NSObject> ... @end
并且它已经成功编译。 为什么没有错误?编译器如何解释static关键字?
static
const
inline
volatile
很明显,你无法指定协议的存储类别,因为这是没有意义的,所以它会被默默忽略。
static
(或const
、inline
、volatile
等关键字...),逻辑上这些关键字都没有意义,因为协议不是运行时对象,你从逻辑上根本没有产生任何区别。因此,在这种情况下不会发生任何错误,但你可以把这视为编译器不会介意并优雅地忽略这些。 - holex