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