18

如何使用像这个 Java 类这样的类级变量创建一个 Objective-C 类?

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;
4

6 回答 6

38

看起来您想创建常量(因为您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;


如果您不想创建常量而只想static在 Objective-C 中使用,很遗憾您只能static在实现 (.m) 文件中使用。并且可以直接访问它们而无需为类名添加前缀。

例如:

static NSString *url = @"something";

我希望这有帮助。

于 2013-05-02T05:40:02.557 回答
31

试试看....

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

希望我有所帮助。

于 2013-05-02T05:29:27.477 回答
10

您需要使用类方法来访问无需创建实例即可调用的任何内容。

@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
于 2013-05-02T05:36:39.700 回答
2

可以这样做:

@interface Test
 {
   static NSString *tableName;
 }

+(NSString *) getTableName;
@end

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

然后你获取它:

NSString *name = [Test getTableName];
于 2013-05-02T05:35:11.773 回答
2

Objective-C 没有类变量

我建议将静态 NSString 放在类的实现文件中,并提供类方法来访问它

@implementation MyClass

static  NSString* str;
于 2013-05-02T05:30:39.243 回答
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]

于 2016-05-13T15:23:59.900 回答