ios基礎之一天一道筆試題(1)
以下程式碼有問題嗎,如何優化?
for (int i = 0; i < 100000000000; i ++) {
NSString *string = @"Hello";
string = [string stringByAppendingFormat:@"--%d",i];
string = [string uppercaseString];
}
解析:
本題主要考察記憶體管理相關知識點,我們先看一下蘋果官方文件關於autoreleasePool使用的其中一條說明:
If you write a loop that creates many temporary objects.
You may use an autorelease pool block inside the loop to dispose of those objects before the next iteration. Using an autorelease pool block in the loop helps to reduce the maximum memory footprint of the application.
此題正是根據這條說明而出,如果不使用autoreleasePool,隨著迴圈次數的增加,程式執行的記憶體開銷會越來越大,直到程式記憶體溢位,文件中也給出了優化方案,即在迴圈內新增aotureleasePool以減少記憶體峰值,優化後的程式碼如下:
for (int i = 0; i < 1000000000; i ++) {
@autoreleasepool {
NSString *string = @"Hello";
string = [string stringByAppendingFormat:@"--%d",i];
string = [string uppercaseString];
}
}
相關文章
- java基礎筆試題Java筆試
- 從一道筆試題題說起筆試
- 一道java基礎陷阱題Java
- 一道java面試基礎題Java面試
- JavaScript 基礎 - 第1天JavaScript
- 面安服的一道筆試題筆試
- 一道TCL的筆試題---遞迴筆試遞迴
- Android面試之Java基礎筆試題Android面試Java筆試
- iOS基礎面試題iOS面試題
- 關於一道前端筆試題的思考前端筆試
- JavaScript基礎第02天筆記JavaScript筆記
- 從一道春招筆試題說起 [上]筆試
- 【1】測試基礎知識
- 一道關於block尺寸計算的筆試題BloC筆試
- mybatis基礎之一MyBatis
- python基礎筆記1Python筆記
- 1.js 基礎筆記JS筆記
- iOS 基礎面試題彙總iOS面試題
- ios 基礎問題記錄iOS
- 一道被前端忽略的基礎題,不信看你會幾題前端
- 【IOS開發基礎系列】Cocoa基礎專題iOS
- 一道關於筆試的多執行緒題目筆試執行緒
- iOS 每天一道面試題iOS面試題
- Java基礎系列之一Java
- 一道比較少見的基礎面試題,考考大家面試題
- 面試題之:java基礎1面試題Java
- python 基礎習題1--基礎語法Python
- 每日一道java筆試題 2020-9-23Java筆試
- 你應該會的一道多執行緒筆試題執行緒筆試
- iOS 基礎iOS
- python基礎筆記0_1Python筆記
- C++基礎知識筆記(1)筆記
- 【Java】留下沒有基礎眼淚的面試題,java初級面試筆試題Java面試題筆試
- Java基礎知識題集(1)Java
- Java基礎慨念面試題1Java面試題
- 想了很久,一道Microsoft的筆試題目 —— Reversing Linked ListROS筆試
- 【校園招聘】一道筆試題看c++中virtual覆蓋筆試C++
- 專題十二 基礎DP1 題集