web-dev-qa-db-ja.com

Objective-CでJavaのような静的メンバー変数を宣言する

Java class?

public class test
{

    public static final String tableName = "asdfas";    
    public static final String id_Column = "_id";
    public static final String Z_ENT_Column = "Z_ENT";

}

次のように、インスタンスを作成せずにアクセスしたい:

String abc = test.tableName;
16
Awais Tariq

定数を作成したいようです(質問でfinalを使用しているため)。 Objective-Cでは、externを使用できます。

このようなことをしてください:

1)Constantsという名前の新しいObjective-Cクラスを作成します。

2)ヘッダー(.h)ファイル内:

extern const NSString *SERVICE_URL;

3)実装(.m)ファイル:

NSString *SERVICE_URL = @"http://something/services";

4)#import "Constants.h"を使用するクラスに追加します

5)NSString *url = SERVICE_URL;として直接アクセス


定数を作成せず、Objective-Cでstaticを使用するだけの場合、残念ながら実装(.m)ファイルではstaticしか使用できません。また、クラス名にプレフィックスを付けずに直接アクセスできます。

例えば:

static NSString *url = @"something";

これがお役に立てば幸いです。

35
Avtar Guleria

それを試してみてください....

static NSString *CellIdentifier = @"reuseStaticIdentifier";

合成プロパティを使用して直接値にアクセスできます
またはNSUserDefaultsを使用して値を保存および取得できます

説明

@interface MyClass : NSObject
+(NSString *)myFullName;
@end

実装:

#import "MyClass.h"

@implementation MyClass
static NSString *fullName = @"Hello World";

+(NSString *)myFullName{
  return fullName;
}
@end

使用する:

#import "MyClass.h"

@implementation AppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
  NSLog(@"%@",[MyClass myFullName]); //no instance but you are getting the value.
}

@end

お役に立てば幸いです。

29
Chirag Pipaliya

クラスメソッドを使用して、呼び出すことができるものにアクセスする必要がありますインスタンスを作成せずに

@interface MyClass : NSObject
+(NSString *)myFullName;
@end

実装:

#import "MyClass.h"

@implementation MyClass
   static NSString *fullName=@"anoop vaidya";

+(NSString *)myFullName;{
    return fullName;
}
@end

使い方:

#import "MyClass.h"

@implementation AppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
    NSLog(@"%@",[MyClass myFullName]); //no instance but you are getting the value.
}

@end
10
Anoop Vaidya

そのようにすることができます:

@interface Test
 {
   static NSString *tableName;
 }

+(NSString *) getTableName;
@end

@implementation Test
+ (NSString *)getTableName
 {
    return tableName;
 }
@end

そして、あなたはそれを取得します:

NSString *name = [Test getTableName];
2

私は、次のような列挙型を使用するのが最良の方法であり、よりよく使用されると思います

enum{
    GSPAYMENT_METHOD_CARD = 1,
    GSPAYMENT_METHOD_CASH = 2,
    GSPAYMENT_METHOD_VOID = 3
};
typedef NSUInteger PaymentMethodType;

@interface GSPaymentMethodの直前

この方法では、.hファイルを含めるだけで、どこでもこれらの定数を使用できます。

例えば

[self newPayment:GSPAYMENT_METHOD_CASH]

2

Objective-Cにはクラス変数がありません

クラスの実装ファイルに静的NSStringを配置し、それにアクセスするためのクラスメソッドを提供することをお勧めします

@implementation MyClass

static  NSString* str;
2