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];
}
}
相關文章
- iOS 基礎面試題彙總iOS面試題
- 從一道筆試題題說起筆試
- Android面試之Java基礎筆試題Android面試Java筆試
- 面試題之:java基礎1面試題Java
- 一道高階iOS面試題(runtime方向)iOS面試題
- 一道比較少見的基礎面試題,考考大家面試題
- JavaScript 基礎 - 第1天JavaScript
- 面安服的一道筆試題筆試
- 【IOS開發基礎系列】Cocoa基礎專題iOS
- JavaScript基礎第02天筆記JavaScript筆記
- python基礎筆記1Python筆記
- ios 基礎問題記錄iOS
- 從一道春招筆試題說起 [上]筆試
- 每日一道java筆試題 2020-9-23Java筆試
- iOS面試中經常問的點 - 基礎問題(一)iOS面試
- 一道被前端忽略的基礎題,不信看你會幾題前端
- 【Java】留下沒有基礎眼淚的面試題,java初級面試筆試題Java面試題筆試
- java基礎面試題Java面試題
- python 基礎習題1--基礎語法Python
- Java基礎系列之一Java
- 【1】測試基礎知識
- iOS 基礎iOS
- python基礎筆記0_1Python筆記
- 想了很久,一道Microsoft的筆試題目 —— Reversing Linked ListROS筆試
- MySQL 三年模擬五年面試之一網打盡系列(1)----- MySQL 基礎MySql面試
- iOS | 面試知識整理 - OC基礎 (一)iOS面試
- 從一道 iOS 面試題到 Swift 物件模型和執行時細節——「iOS 面試之道」勘誤iOS面試題Swift物件模型
- iOS學習筆記——基礎控制元件(上)iOS筆記控制元件
- Golang 基礎面試題 01Golang面試題
- Java基礎面試題下Java面試題
- java面試題--基礎上Java面試題
- js面試題(基礎)梳理JS面試題
- go面試題-基礎類Go面試題
- 如何準備Java的高階技術面試,java基礎面試筆試題Java面試筆試
- Python基礎面試題30問!Python基礎教程Python面試題
- AI筆試面試題庫-Python題目解析1AI筆試面試題Python
- 你應該會的一道多執行緒筆試題執行緒筆試
- iOS跳槽寶典-面試技術基礎篇iOS面試