[英]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";
我認為您會發現您的變量不必是static
或const
! 使它成為類變量的原因是它在任何方法或函數之外。
盡管有名稱, static
與static
無關(即保持不變)。 這是一個非常不幸的術語選擇,但是它來自C語言,我們堅持使用它。 static
與變量的范圍有關; 它是在文件級別,文件范圍內但在任何特定方法/功能之外實現的。 有兩種使用方式:
在任何方法或函數之外, static
阻止從該文件外部查看全局變量。 請參見從另一個類引用靜態NSString * const 。
在方法或函數內部, static
方法將存儲與整個文件相關聯,而不是在方法或函數以“自動”變量的方式結束時使變量不存在。 正如C的發明人自己指出的那樣(K&R 4.6):
與自動操作不同,它們會在存在時進行補救,而不是每次激活該功能時都會進行操作。 這意味着內部
static
變量在單個函數內提供私有的永久存儲。
這就是為什么在類修訂單例的實現中使用static
原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.