NSString的記憶體實現

2021-07-25 06:55:31 字數 664 閱讀 5347

nsstring等foundation框架提供的類的記憶體管理

(1)字串的常量池(在資料區)

(2)

nsstring *str1 = @「abc」;

nsstring *str2 = [nsstring stringwithstring:@」abc」];

nsstring *str3 = [[nsstring alloc] initwithstring:@」abc」];

以上3個的空間在棧區,並且str1,str2,str3指向的是同乙個位址,也就是說abc在資料區只儲存了1份。如果你需要的字串在常量池中已經存在了,

不會分配新的記憶體空間。符合此規則的有以下幾種:

nsstring *str4 = [nsstring stringwithformat:@"abc"];

nsstring *str5 = [[nsstring alloc] initwithformat:@"abc"];

以上兩種情況,字串是儲存在堆區的,並且兩個的記憶體位址並不相同,也就是說同一段字串在堆區中儲存了兩份。

對於alloc關鍵字而言,他本身的意思是分配記憶體空間,如果沒有的話,系統會自動分配空間,並且系統也會自動進行release,不需要程式猿

自己釋放。而alloc需要程手動釋放。

NSString的記憶體管理問題

nsstring是乙個不可變的字串物件。這不是表示這個物件宣告的變數的值不可變,而是表示它初始化以後,你不能改變該變數所分配的記憶體中的值,但你可以重新分配該變數所處的記憶體空間。生成乙個nsstring型別的字串有三種方法 方法1.直接賦值 nsstring str1 my string 方法2....

NSString的記憶體管理問題

nsstring是乙個不可變的字串物件。這不是表示這個物件宣告的變數的值不可變,而是表示它初始化以後,你不能改變該變數所分配的記憶體中的值,但你可以重新分配該變數所處的記憶體空間。生成乙個nsstring型別的字串有三種方法 方法1.直接賦值 nsstring str1 my string 方法2....

NSString類的方法實現

建立乙個新字串並將其設定為 path 指定的檔案的內容,使用字元編碼enc,在error上返回錯誤 id stringwithcontentsofurl nsurl url encoding nsstringencoding enc error nserror error 建立乙個新字串並將其設定為...