同步:代碼依次執行,一個人執行多個任務,也是依次執行。一個人在同一時間只執行一個任務
異步:可以同時執行多個任務
進程:指在系統中運行的應用程序,每個進程都是獨立的,都有獨立的且安全的運行空間
線程:一個進程可以有多個線程,但只有一個主線程。進程的任務都是在線程里面完成的。
進程,線程與多線程之間的關系?
進程=公司 線程 = 員工 多線程 = 老板
多線程可以解決程序阻塞問題,也可以提高程序的執行效率
自動釋放池常見面試題代碼
for (int i = 0; i < 100000; ++i) {
NSString *str = @"Hello World";
str = [str stringByAppendingFormat:@"- %d",i]; //字符串拼接
str = [str uppercaseString]; //將字符串替換成大寫
}
如果循環的次數過大,會出現什么問題?該怎么解決?
會出現內存溢出,循環內部創建大量的臨時對象,沒有被釋放
每次循環都將上一次創建的對象release
for (int i = 0; i < 100000; ++i) {
@autoreleasepool{
NSString *str = @"Hello World";
str = [str stringByAppendingFormat:@"- %d",i];
str = [str uppercaseString];
}
}