0

目的の c に static オブジェクトを渡す方法を知っている人はいますか?

Javaでは次のようなものです:

class A {

    static int x;

    ...
}

class B {

    ...

    A.x = 4;

}

似たようなもの。

Objective C NSString を使用して同じ結果を達成する方法を誰かが知っていますか?

ありがとう。

4

4 に答える 4

0

Objective-C には、クラス (静的) 変数はありません。できることの 1 つは、グローバル変数を使用することですが、一般的には推奨されません。

// A.h
extern int x;

// A.m
int x;

// B.m
#import "A.h"
x = 4;

ただし、代わりにコード設計を再考する必要があります。グローバルを使用せずに済むはずです。

于 2013-01-14T12:20:01.483 に答える
0

.m の上で変数を宣言し、静的変数のゲッターとセッターを作成して、それを操作する必要があります

static int x;

+ (int)getX {
    return x;
}

+ (void)setX:(int)newX {
    x = newX;
}
于 2013-01-14T12:20:07.910 に答える
0

Objective-C には、静的/クラス変数がありません (静的メソッドとクラス メソッドの違いは微妙ですが重要であることに注意してください)。

代わりに、クラス オブジェクトにアクセサーを作成し、グローバルな static を使用して値を格納できます。

@interface MyClass : NSObject
+(NSString *)thing;
+(void)setThing:(NSString *)aThing;
@end




@implementation MyClass

//static ivars can be placed inside the @implementation or outside it.
static NSString *_class_thing = nil;

+(void)setThing:(NSString *)aThing {
    _class_thing = [aThing copy];
}


+(NSString *)thing {
    return _class_thing;
}

//...
@end
于 2013-01-14T12:20:46.317 に答える
0

Obj-C で行う直接的な方法はありません。

静的プロパティにアクセスするクラス メソッドを作成する必要があります。

// class.h
@interface Foo {

}

+(NSString *) string;

// class.m
+(NSString *) string
{
  static NSString *string = nil;

  if (string == nil)
  {
    // do your stuff
  }

  return string;
}
于 2013-01-14T12:21:27.097 に答える