一个类中的extern NSString * const。

时间:2014-03-20 17:02:59

标签: ios iphone objective-c nsstring extern

您好我有这个头文件:

#import <Foundation/Foundation.h>

@interface PCConstants : NSObject
extern NSString *const kPCUserProfileKey;
extern NSString *const kPCUserProfileNameKey;
extern NSString *const kPCUserProfileFirstNameKey;
extern NSString *const kPCUserProfileLocationKey;
extern NSString *const kPCUserProfileGenderKey;
extern NSString *const kPCUserProfileBirthDayKey;
extern NSString *const kPCUserProfileInterestedInKey;
@end

实现:

#import "PCConstants.h"

@implementation PCConstants

NSString *const kPCUserProfileKey                  = @"profile";
NSString *const kPCUserProfileNameKey              = @"name";
NSString *const kPCUserProfileFirstNameKey         = @"firstname";
NSString *const kPCUserProfileLocationKey          = @"location";
NSString *const kPCUserProfileGenderKey            = @"gender";
NSString *const kPCUserProfileBirthDayKey          = @"birthday";
NSString *const kPCUserProfileInterestedInKey      = @"interestedIn";

@end

当我在.pch文件中导入头文件时,我可以在任何地方访问常量。但我试着了解发生了什么。

我从不为此对象分配init,因此它们不能是实例常量。所以常量必须是“类对象常量对吗?但我认为类对象不能包含数据。

有人可以解释一下吗?

1 个答案:

答案 0 :(得分:8)

那些extern变量是app级别的全局变量。它们没有作用于类,它们没有作用于类的实例。

Objective-C不支持实例或类级别全局变量。

如果需要类级别常量,则需要定义类方法以访问它们。如果需要实例级常量,则需要定义实例方法或只读属性来访问它们。