nsstring是乙個不可變的字串物件。這不是表示這個物件宣告的變數的值不可變,而是表示它初始化以後,你不能改變該變數所分配的記憶體中的值,但你可以重新分配該變數所處的記憶體空間。
生成乙個nsstring型別的字串有三種方法:
方法1.直接賦值: nsstring *str1 = @"my string";
方法2.類函式初始化生成: nsstring *str2 = [nsstring stringwithstring:@"my string"];
方法3.例項方法初始化生成: nsstring *str3 = [[nsstring alloc] initwithstring:@"my string"];
nsstring
*str4 = [[
nsstring
alloc
]initwithformat
:@"my string"
];區別1: 方法一生成字串時,不會初始化記憶體空間,所以使用結束後不會釋放記憶體;
而其他三個都會初始化記憶體空間,使用結束後要釋放記憶體;
在釋放記憶體時方法2和3也不同,方法2是autorelease型別,記憶體由系統釋放;方法3則必須手動釋放
區別2:用format初始化
的字串,需要初始化一段動態記憶體空間,如:0x6a42a40;
而用string宣告的字串,初始化的是常量記憶體區,如:0x46a8,
常量記憶體區的位址,只要值相同,占用的位址空間是一致的。
所以str3和str1的位址一致,但是str4和str1的位址不一致。
NSString的記憶體管理問題
nsstring是乙個不可變的字串物件。這不是表示這個物件宣告的變數的值不可變,而是表示它初始化以後,你不能改變該變數所分配的記憶體中的值,但你可以重新分配該變數所處的記憶體空間。生成乙個nsstring型別的字串有三種方法 方法1.直接賦值 nsstring str1 my string 方法2....
NSString的記憶體實現
nsstring等foundation框架提供的類的記憶體管理 1 字串的常量池 在資料區 2 nsstring str1 abc nsstring str2 nsstring stringwithstring abc nsstring str3 nsstring alloc initwithstr...
NSString中的數字問題
在寫學生管理系統的時候,需要判斷student類中 學生姓名中是否有數字,學號 年齡 成績是否全為數字,而在定義時把它們都設為了nsstring,所以需要從nsstring中提取出,或判斷出數字。用於判斷學生姓名 用來判斷姓名和班級 是否含有數字 nscharacterset characterse...