为什么Xcode报告我的类变量的“已定义但未使用”警告?

时间:2009-10-21 20:00:15

标签: objective-c xcode

我在标题中的这一行收到警告,但我在我的实现中使用了类变量(在类方法和实例方法中):

#import <UIKit/UIKit.h>

static NSMutableArray *classVar; // Xcode warning: 'classVar' defined but not used

@interface MyViewController : UIViewController {

4 个答案:

答案 0 :(得分:14)

此变量不是类/实例变量。每次将头文件包含到.m文件中时,编译器都会创建一个新的静态变量,其范围仅限于包含此标头的文件。如果您正在尝试获取类级变量,请将声明移动到相应的.m文件的开头。

答案 1 :(得分:6)

static变量具有文件范围。由于Xcode无法找到该文件中使用的变量,因此它会看到一个未使用的变量。如果您确实希望从整个程序中访问该变量,请将其作为外部变量声明并在您的实现中进行定义。如果它只是由该类使用,只需将静态变量移动到您的实现文件中。

答案 2 :(得分:3)

您已将classVar放在接口定义之外。这将使编译器认为您正在声明一个全局变量,并且因为它看起来像是一个头文件(.h),它也将在包括此头文件的所有文件中创建。我想在编译包含此头文件的MyViewController.m以外的文件时会出现警告。

修改 我的建议是你将classVar移动到MyViewController的.m文件中(先解释你在哪里)

答案 3 :(得分:0)

这是执行此操作的正确方法:

在.h

extern NSString *const DidAddRecordNotification;

在.m

NSString *const DidAddRecordNotification = @"DidAddRecordNotification";