0

因此,可以說,我有以下代碼什麼時候適合使用常量和什麼時候適合用單一的方法返回一個常量

頁眉:

#import <Foundation/Foundation.h> 

FOUNDATION_EXPORT NSString* const kTHBaseUrl; 

@interface THSharedObject : NSObject 

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

@end 

實現:

#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 

我應該將這個文件包含在.pch文件中,還是應該僅將它包含在使用共享對象的文件中。

調用kTHBaseURL常量或調用返回常量[[​​THSharedObject shared] baseUrl]的實例化方法會更合適嗎?

將文件包含在pch中的優點和缺點是什麼,而不是僅將它包含在使用它的類中。

調用返回常量的方法與直接調用常量相比有什麼優勢。

或者這只是一個意見問題?

謝謝。

回答

0

除非常量在頭文件中,否則不能從類的外部訪問常量,在這種情況下它不是。它可以直接在類中使用常量,但外部類需要一個靜態方法(如果它是靜態的)或實例方法來返回值。

+0

我的頭文件包含FOUNDATION_EXPORT NSString * const kTHBaseUrl;我編輯我的問題來表示,我認爲這是假設的。 – 2012-08-08 19:53:19

+0

在這種情況下,你的常量在文件範圍內,除非你定義了一個API或一個框架,需要將它們暴露給一般用途,否則通常應該避免使用文件範圍。對於應用常量來說,它對我來說似乎是一個糟糕的選擇,但也許這只是一個意見。文件範圍通常是邪惡的,因爲名稱空間可能會發生碰撞,並且除非常量名稱中嵌入了大量信息,否則常量的位置沒有明顯的類上下文,例如 NSCenterTextAlignment - 類似的東西。什麼課程使用或暴露常量?它是一個猜測 – 2012-08-08 20:22:16

相關問題