iOS NSString真是個奇葩啊!
遷移自開源中國
一直認為像這樣寫會造成記憶體洩露呢!可是我好像真的錯了。
NSString *textStr = @"abc";
if (YES) {
textStr = @"def";
}
NSLog(@"textStr is %@", textStr);
這樣寫一點問題都沒有,因為在OC中有個常量字串(NSConstantString)的概念,而它是不需要手動release的。我又做了測試如下
NSString *str = @"dddd";
while (YES) {
str = @"aaaaaaaaa";
NSLog(@"%@ %d", str, str.retainCount);
}
執行了足足10分鐘,記憶體一點沒漲,又做了如下測試
NSArray *array = @[@"dddd", @"dddd"];
while (YES) {
array = @[@"dddddddddd"];
NSLog(@"%@", array[0]);
}
執行期間,記憶體呈直線上升,兩種測試cpu幾乎爆滿。
接下來又錯了如下測試
NSString *str = @"dddd";
while (YES) {
str = [[NSString alloc] initWithString:@"4321"];
NSLog(@"%@ %d", str, str.retainCount);
}
結果記憶體依然不漲,所以真的沒問題,但是最後這種情況不建議,因為要遵循官網的記憶體管理原則,要加上release。
另外這樣寫不會報錯的。
NSString *str = @"dddd";
[str release];
NSLog(@"str is %@", str);
相關文章
- iOS-NSStringiOS
- iOS擷取NSString字串iOS字串
- iOS NSString字串擷取方法iOS字串
- 奇葩 AI 異聞錄丨人類真是太好玩兒了!!!AI
- iOS NSString中實用的方法iOS
- iOS NSString 字串的特殊處理iOS字串
- ios NSString與LongValue,usignedLongValue,longlongValueiOS
- IOS FoundationKit (NSString) 知識彙總iOS
- iOS測試奇葩問題iOS
- 優雅地處理異常真是一門學問啊!
- iOS圖文混排與NSString轉換iOS
- iOS 開發刷題系列三:NSString 引用計數iOS
- iOS開發之基礎篇(2)—— NSString、NSMutableStringiOS
- YUI可真是個不錯的東東UI
- Python 潮流週刊#60:Python 的包管理工具真是多啊(摘要)Python
- 眼看移動的規定的建設任務期限快要到達了。真是著急啊
- iOS-字典+block代替switch-(解決switch不能使用NSString)iOSBloC
- Session.load()這個方法還真是怪!Session
- NSString 遇到的坑
- NSString使用stringWithFormatORM
- 轉 IOS---NSdata 與 NSString,Byte陣列,UIImage 的相互轉換iOS陣列UI
- 來這個論壇沒多久,發現真是好地方,象banq這樣的高手這真是多
- Golang奇葩點Golang
- NSDate和NSString轉換
- 啊吧啊吧
- 到底該用laravel哪個版本啊Laravel
- 能否開個rubyonrails的板塊啊?AI
- 這個問題誰能解決啊?
- Git 奇葩問題Git
- Airbnb面試的27個奇葩問題,你 hold 住嗎?AI面試
- 用法總結:NSNumber、NSString、NSData
- 程式設計師都遇見過什麼奇葩? 客戶: 你程式碼加這麼多註釋有病啊程式設計師
- 微軟NewBing真是Niubility微軟
- SOAP和WebService真是垃圾。Web
- Attachment 這個外掛怎麼用啊?
- 這個論壇可以空密碼啊!!!!???密碼
- 21個奇葩註釋,程式設計師看了都點贊程式設計師
- 啊??????