目的の c に static オブジェクトを渡す方法を知っている人はいますか?
Javaでは次のようなものです:
class A {
static int x;
...
}
class B {
...
A.x = 4;
}
似たようなもの。
Objective C NSString を使用して同じ結果を達成する方法を誰かが知っていますか?
ありがとう。
目的の c に static オブジェクトを渡す方法を知っている人はいますか?
Javaでは次のようなものです:
class A {
static int x;
...
}
class B {
...
A.x = 4;
}
似たようなもの。
Objective C NSString を使用して同じ結果を達成する方法を誰かが知っていますか?
ありがとう。
Objective-C には、クラス (静的) 変数はありません。できることの 1 つは、グローバル変数を使用することですが、一般的には推奨されません。
// A.h
extern int x;
// A.m
int x;
// B.m
#import "A.h"
x = 4;
ただし、代わりにコード設計を再考する必要があります。グローバルを使用せずに済むはずです。
.m の上で変数を宣言し、静的変数のゲッターとセッターを作成して、それを操作する必要があります
static int x;
+ (int)getX {
return x;
}
+ (void)setX:(int)newX {
x = newX;
}
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
Obj-C で行う直接的な方法はありません。
静的プロパティにアクセスするクラス メソッドを作成する必要があります。
// class.h
@interface Foo {
}
+(NSString *) string;
// class.m
+(NSString *) string
{
static NSString *string = nil;
if (string == nil)
{
// do your stuff
}
return string;
}