關於一些變數的使用
如何要宣告一個可以被全域性訪問的的字串常量?
UIKIT_EXTERN NSString *const PYSearchPlaceholderText;
#define UIKIT_EXTERN extern __attribute__((visibility ("default")))
</br>
const 用法解釋
四種寫法:
1. static const NSString *HSCoder = @"漢斯哈哈哈"; // 指向的指標不能改變,static限制了不能被外部檔案訪問了
2. const NSString *HSCoder = @"漢斯哈哈哈"; // 指向的記憶體地址的內容不能改變,但是可以改變指向的指標
3. NSString const *HSCoder = @"漢斯哈哈哈"; // 指向的記憶體地址的內容不能改變,但是可以改變指向的指標
4. NSString * const HSCoder = @"漢斯哈哈哈"; // // 指向的記憶體地址的內容不能改變(NSString本身就不能改變),指向的指標也不能改變。
注意:
- 以上4種情況,在另外一個檔案中使用extern修飾變數,可以直接改變地址記憶體的內容。(不知道該怎麼解決....才能使得在另外的檔案中也不能修改)
- 區域性常量:用static修飾後,不能提供外界訪問
參考http://www.jianshu.com/p/f83335e036b5
</br>
static 用法解釋
</br>
extern 用法解釋
在原始檔A裡定義的變數,在其它原始檔裡是看不見的(即不能訪問)。為了在原始檔B裡能呼叫這個函式,應該在B的頭部加上一個外部宣告: extern 變數; 這樣,在原始檔B裡也可以呼叫那個變數了。
注意這裡的用詞區別:在A裡是定義,在B裡是宣告。一個函式只能(也必須)在一個原始檔裡被定義,但是可以在其它多個原始檔裡被宣告。定義引起儲存分配,是真正產生那個實體。而宣告並不引起儲存分配。
打一個粗俗的比方:在原始檔B裡宣告後,好比在B裡開了一扇窗,讓它可以看到A裡的那個變數。
attribute 用法解釋
attribute是GNU C的一種機制,用法為attribute_ ((attribute-list))。當專案需要作為一個庫被外包引用的時候通常在編譯時可以用引數-fvisibility指定所有符號的可見性。在編譯命令中加入 -fvisibility=hidden引數,會將所有預設的public的屬性變為hidden。此時,如果對函式設定attribute((visibility ("default")))引數,使特定的函式仍然按預設的public屬性處理,則-fvisibility=hidden引數不會對該函式起作用。所以,設定了-fvisibility=hidden引數之後,只有設定了attribute((visibility ("default")))的函式才是對外可見的。
</br>
總結:如果需要讓類或方法可以讓庫外被引用,就需要使用以上程式碼確保程式碼的可見性。
相關文章
- 關於繫結變數的使用變數
- 關於Application型別的變數一些問題。APP型別變數
- 關於argument變數的理解變數
- 關於JavaScript變數提升JavaScript變數
- 關於js變數提升JS變數
- 關於條件變數變數
- 關於繫結變數變數
- 關於DSS中的繫結變數變數
- 關於web應用的static變數Web變數
- 關於批處理中的變數變數
- 關於PHP程式設計中的變數使用技巧小結PHP程式設計變數
- 關於Mysql使用的一些總結MySql
- 關於dmserver使用的一些竅門Server
- 關於 變址影像(indexed image) 的一些總結Index
- AmS中的一些重要排程相關變數變數
- 關於ThreadLocal變數的一個坑thread變數
- 關於pl/sql中的繫結變數SQL變數
- 是否使用繃定變數的一些建議變數
- 關於例項變數和靜態變數的一點疑問變數
- Java 關於執行緒的一些使用Java執行緒
- print_r-列印關於變數的易於理解的資訊變數
- 關於javascript中變數及函式的提升JavaScript變數函式
- 記錄一個關於變數命名的事情變數
- 關於JS中變數的作用域-例項JS變數
- 關於sql_profile中的繫結變數SQL變數
- 關於環境變數設定的問題變數
- SpringMVC thymeleaf 關於layout使用的一些心得SpringMVC
- mysql練習 —— 關於一些函式的使用MySql函式
- mysql5.1關於自動重連的一些變化MySql
- 關於變數與‘=’賦值的情況出錯變數賦值
- .Net(C#)關於變數的命名和屬性C#變數
- 關於網頁設計的一些統計數字網頁
- 關於TNS_ADMIN環境變數變數
- 關於iframe中使用fixed定位的一些問題
- 關於typedef在struct使用上的一些問題Struct
- 關於c#使用Npoi庫的一些隨筆C#
- 關於 Angular 註解 @Injectable() 使用的一些誤區Angular
- 關於ListView控制元件使用時的一些心得View控制元件