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およびNOTConstantA.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 に答える