Objective c 何时适合使用常量,何时适合使用单个方法返回常量

Objective c 何时适合使用常量,何时适合使用单个方法返回常量,objective-c,singleton,global-variables,constants,software-design,Objective C,Singleton,Global Variables,Constants,Software Design,假设我有以下代码 标题: #import <Foundation/Foundation.h> FOUNDATION_EXPORT NSString* const kTHBaseUrl; @interface THSharedObject : NSObject + (THSharedObject*)shared; - (NSString*)baseUrl; @end 我应该将此文件包含在.pch中,还是只包含在使用共享对象的文件中 调用kTHBaseURL常量或调用返回常量[

假设我有以下代码

标题:

#import <Foundation/Foundation.h>

FOUNDATION_EXPORT NSString* const kTHBaseUrl;

@interface THSharedObject : NSObject

+ (THSharedObject*)shared;
- (NSString*)baseUrl;

@end
我应该将此文件包含在.pch中,还是只包含在使用共享对象的文件中

调用kTHBaseURL常量或调用返回常量[[THSharedObject shared]baseUrl]的实例化方法更合适吗

与只在使用pch的类中包含文件相比,在pch中包含文件有哪些优点和缺点

与直接调用常量相比,调用返回常量的方法有哪些优点

还是所有这些都只是意见问题


谢谢。

您不能从类外访问实现中的常量,除非该常量位于头文件中,而在本例中不是。直接在类内部使用常量是可以的,但是外部类需要一个静态方法(如果是静态的)或实例方法来返回值。

My header包含FOUNDATION\u EXPORT NSString*const kTHBaseUrl;我编辑我的问题是为了表示这一点,我认为这是假设的。在这种情况下,常量在文件范围内。在一般情况下,应该避免使用文件范围,除非您定义的API或框架需要公开一组以供一般使用。对于应用程序常量,这对我来说似乎是一个糟糕的选择,但也许这只是一个观点。文件范围通常是有害的,因为可能会发生名称空间冲突,并且对于常量的来源没有明显的类上下文,除非您将大量信息嵌入到常量名称中,例如NSCenterTextAlignment——诸如此类的东西。什么类使用或公开该常量?这只是猜测
#import "THSharedObject.h"

NSString* const kTHBaseURL = @"http://0.0.0.0/";

@implementation THSharedObject

static THSharedObject* shared;

+ (void)initialize
{
    static BOOL initialized = NO;
    if(!initialized) {
        initialized = YES;
        shared = [[THSharedObject alloc] init];
    }
}

+ (THSharedObject*)shared
{
    return shared;
}

- (NSString*)baseUrl
{
    return kTHBaseURL;
}

- (MyModelObject*)globalModel
{
    return instanceOfModel;
}

@end