亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

object-C中的常數

object-C中的常數

iOS
Qyouu 2019-06-06 13:21:40
object-C中的常數我在開發一個可可粉應用程序,我使用常量NSStrings作為存儲我的首選項的鍵名的方法。我理解這是一個好主意,因為它允許在必要時很容易地改變鍵。另外,這是一個“把你的數據和你的邏輯分開”的整體概念。無論如何,是否有一種為整個應用程序定義一次這些常量的好方法?我確信有一種簡單而明智的方法,但現在我的類只是重新定義它們使用的方法。
查看完整描述

3 回答

?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

您應該創建一個頭文件,如

//?Constants.hFOUNDATION_EXPORT?NSString?*const?MyFirstConstant;FOUNDATION_EXPORT?NSString?*const?MySecondConstant;//etc.

(你可以用extern而不是FOUNDATION_EXPORT如果您的代碼不用于混合C/C+環境或其他平臺)

可以將此文件包含在使用常量的每個文件中,也可以包含在項目的預編譯頭中。

在.m文件中定義這些常量,如下所示

//?Constants.mNSString?*const?MyFirstConstant?=?@"FirstConstant";NSString?*const?MySecondConstant?=?@"SecondConstant";

應該將Constants.m添加到應用程序/框架的目標中,以便將其鏈接到最終產品。

使用字符串常量代替#defineD常量是可以使用指針比較來測試等式的(stringInstance == MyFirstConstant),它比字符串比較快得多([stringInstance isEqualToString:MyFirstConstant])


查看完整回答
反對 回復 2019-06-06
?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

最簡單的方法:

// Prefs.h#define PREFS_MY_CONSTANT @"prefs_my_constant"

更好的方法:

// Prefs.hextern NSString * const PREFS_MY_CONSTANT;// Prefs.mNSString * const PREFS_MY_CONSTANT = @"prefs_my_constant";

第二個優點是,更改常量的值并不會導致整個程序的重建。


查看完整回答
反對 回復 2019-06-06
?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

還有一件事要提。如果需要一個非全局常量,則應使用static關鍵詞。

// In your *.m filestatic NSString * const kNSStringConst = @"const value";

因為static關鍵字時,此Const在文件之外不可見。


輕微更正@QuinnTaylor:靜態變量在編譯單元..通常,這是一個單一的.m文件(如本例所示),但如果在其他地方包含的標頭中聲明.m文件,它可能會咬死您,因為編譯后會得到鏈接器錯誤。


查看完整回答
反對 回復 2019-06-06
  • 3 回答
  • 0 關注
  • 572 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號