簡體   English   中英

const NSString和static NSString有什么區別

[英]what's the different between const NSString and static NSString

我想使用類變量。 以下兩種方法效果很好,但是我不知道它們之間有什么區別。

static NSString *str1 = @"str1";
NSString *const str2 = @"str2";
@implementation StrViewController

您可以將位置更改為str1指向的位置,但對str2不能做相同的操作,因為它是const指針

這將工作:

str1 = @"Hello";

雖然這不會:

str2 = @"Hello"; 

我認為您會發現您的變量不必是staticconst 使它成為類變量的原因是它在任何方法或函數之外。

盡管有名稱, staticstatic無關(即保持不變)。 這是一個非常不幸的術語選擇,但是它來自C語言,我們堅持使用它。 static與變量的范圍有關; 它是在文件級別,文件范圍內但在任何特定方法/功能之外實現的。 有兩種使用方式:

  • 在任何方法或函數之外, static阻止從該文件外部查看全局變量。 請參見從另一個類引用靜態NSString * const

  • 在方法或函數內部, static方法將存儲與整個文件相關聯,而不是在方法或函數以“自動”變量的方式結束時使變量不存在。 正如C的發明人自己指出的那樣(K&R 4.6):

與自動操作不同,它們會在存在時進行補救,而不是每次激活該功能時都會進行操作。 這意味着內部static變量在單個函數內提供私有的永久存儲。

這就是為什么在類修訂單例的實現中使用static原因。

暫無
暫無

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

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