Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios @protocol之前的静态关键字_Ios_Objective C_Static_Protocols - Fatal编程技术网

Ios @protocol之前的静态关键字

Ios @protocol之前的静态关键字,ios,objective-c,static,protocols,Ios,Objective C,Static,Protocols,可以这样编写代码: static @protocol MyProtocol <NSObject> ... @end static@protocol-MyProtocol ... @结束 并已成功编译。 为什么没有错误?编译器是如何解释静态的?它显然被默默地忽略了,因为您无法指定协议的存储类,因为它没有任何意义。从逻辑上讲,显式地将协议设置为“静态”是没有意义的,因为它们在抽象级别上已经是一种“静态”接口声明(但我会小心地使用“static”一词,因为它也与

可以这样编写代码:

static @protocol MyProtocol <NSObject>    
...    
@end
static@protocol-MyProtocol
...    
@结束
并已成功编译。

为什么没有错误?编译器是如何解释静态的?

它显然被默默地忽略了,因为您无法指定协议的存储类,因为它没有任何意义。

从逻辑上讲,显式地将协议设置为“静态”是没有意义的,因为它们在抽象级别上已经是一种“静态”接口声明(但我会小心地使用“static”一词,因为它也与C关键字匹配).好的,但为什么没有错误?编译器只是不知道如何处理它?或者什么?我不确定您实际期望的是什么类型的错误?为什么?协议已经是“静态”接口声明,您不能使它们成为“双静态”或“无静态”;所以如果您编写
静态
(或
const
inline
volatile
等)在您的代码中明确地使用这样的关键字(逻辑上它们都没有意义,因为协议不是运行时对象),您实际上在逻辑上没有任何区别–因此,在这种情况下不会产生任何错误,但您可以解释为编译器不会费心,并且会优雅地忽略这些错误。@CHiP love NY不是真的;不。正如我所说,编译器只是忽略了存储类说明符。