簡體   English   中英

類的.h文件中的Typedef枚舉常量?

[英]Typedef enum constant in .h file of class?

我正在編寫一個iPhone應用程序,並按照以下問題的建議在Constants.h和Constants.m文件中安排了我的常數: Objective-C中的常數

我的問題是,如果我在Constants.h中定義一個typedef枚舉,並且想在我的一個類.h文件中聲明該typedef枚舉的屬性,那么實現該定義的正確方法是什么? 我是否需要將typedef枚舉移出Constants.h並移到class .h文件中? 似乎無法達到擁有全局常量文件的目的。

我對這些范圍問題的回答是將聲明限制為所需的最小范圍。

如果在實現中只需要枚舉,則將聲明放在.m中。 如果接口只需要枚舉,則將聲明放在接口的.h中。 如果多個獨立接口都需要枚舉,那么我將把它放在一個全局.h文件中。

我這樣做有兩個原因。 1)限制范圍可減少合並。 2)限制范圍可減少受更改影響的文件數量。

當所有typedef都在一個文件中時,只要兩個開發人員更新任何類型,那么其中一個將必須在提交時合並。 我已經處理了生活中不良合並所產生的足夠的錯誤。 我盡量避免它們。

當程序中的每個文件包含一個文件時,對該文件的任何更改都會影響程序中的每個文件。 我已經交付了生產代碼,這些代碼在沒有任何提交的模塊中存在錯誤。 對全局包含的更改引起了一個問題,該問題似乎沒人在乎,也沒有經過測試,因為看起來好像模塊沒有被觸及。

typedef創建一個名稱,您可以將其用作類型,例如intBOOL或任何其他類型:它是_def_inition類型。 編譯器只需要能夠在要聲明該類型變量的位置查看typedef 這意味着您需要做的就是將Constants.h導入到要使用類型的文件中:

// Constants.h
typedef unsigned int Nimitz;

#import "Constants.h"

@interface Excelsior : NSObject

@property (assign) Nimitz numPlanes;

@end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM