没有成员的课程是否重要?

1 iphone cocoa-touch uikit

我有一个只有类方法(实用程序)的类,所以我的界面如下:

@interface MyUtils : NSObject {
}
Run Code Online (Sandbox Code Playgroud)

Xcode不喜欢它并说:

警告:struct没有命名成员

所以我必须创建一个无意义的实例变量?我的代码工作正常,但是...我只是为编译器激活了各种警告.

小智 5

警告本身不是任何方式的错误,误导或错误.你有一个结构,它是空的,而在C中,有一个没有成员的结构是不常见的.您看到警告的事实是,这取决于您与谁交谈.

这是你的问题:Objective-C是使用GCC编译的,GCC是一个带有Objective-C扩展的C编译器.

Objective-C是C的子集.类似地,Objective-C类是C结构的子集.

在Objective C中,在类中没有属性是完全正常的.在C中,在结构中没有成员是很不寻常的.

GCC是一个C编译器.

这是您的警告源自的地方.海湾合作委员会的Objective-C支持并不够聪明,无法摆脱这种警告,或者你认为不应该这样做.

在类中没有属性的情况下,通常会删除花括号.但是,这不会消除警告.

如果您不小心创建了一个标准结构(即使在Objective-C代码中),那么您将会欣赏这个警告,因为通常情况下,意外创建的结构没有成员,并且会导致许多奇怪的问题.

如果你启用-pedantic进行编译,有一些这样的警告,它们都有扎实的根源.有些像这样,是由于Objective-C和C约定之间的细微差别.其他人是GCC警告您,您的代码可能无法在其他操作系统上编译.有些人认为你永远不应该看到它们,有些人认为这些信息是完全正常的.

如果您使用Xcode,我建议您在项目中使用两个目标.一个正常的警告,一个与你的疯狂警告.使用第一个目标进行正常编码.如果您无法在5分钟内识别出错误,请使用第二个目标.有很多教程在Xcode中处理目标.