0

在Java中,以下代码很好,没有错误。

class ConstantA{
  public static String MY_TEST = "My Test";
}

import ConstantA;
Class TestClass{
  public void test(){
    System.out.println(ConstantA.MY_TEST); // it's work fine.
 }
}

根据上述java概念,它不适用于Objective-C,

在 ConstantA.h 文件中

extern NSString * const MY_TEST;
@interface ConstantA : NSObject
@end

在 ConstantA.m 文件中

NSString * const MY_TEST = @"My Test";
@implementation ConstantA
@end

在 main.m 文件中(此处发生错误)

#import "ConstantA.h"
int main(int argc, char *argv[])
{
    @autoreleasepool {
       NSLog(@"%@",ConstantA.MY_TEST); // error: Property 'MY_TEST' not found on object of type 'ConstantA'
    }
}

可以帮我解决这个问题吗?非常感谢

4

3 回答 3

2
#import "ConstantA.h"
int main(int argc, char *argv[])
{
    @autoreleasepool {
        NSLog(@"%@", MY_TEST); // error: Property 'MY_TEST' not found on object of type 'ConstantA'
    }
}

直接使用全局变量,没有类名: MY_TEST和 NOT ConstantA.MY_TEST。

于 2012-04-24T16:30:53.843 回答
0

使用NSLog(@"%@",MY_TEST);.

MY_TEST不受ConstantA任何限制;它只是一个全局变量。Objective-C 不像 Java 或 C++ 那样支持类级别的“静态变量”。类只能有实例变量

您可以使用全局变量来模拟类变量,但它仍然只是全局变量;它没有以任何方式命名为类。

于 2012-04-24T16:28:25.983 回答
0

将您的全局字符串放在 .h 文件属性中(非原子,保留) NSString *gMyString;

在.m文件中合成gMyString;

它应该工作......上周我遇到了同样的问题!

于 2012-04-24T16:29:31.190 回答